【问题标题】:Ruby on Rails "bin/rails routes" and "bin/rails server" not workingRuby on Rails \"bin/rails routes\" 和 \"bin/rails server\" 不工作
【发布时间】:2023-01-19 14:35:53
【问题描述】:

最近开始学习 Ruby on Rails 来构建一个 web API,使用 VS code 编码,关注 youtube 视频:https://www.youtube.com/watch?v=6KqbPJtA5O8&list=PLbTv9eGiI03u1-JFkFpPGsR_hMre6WX3e

安装完所有东西后,用rails new apiproject --api创建一个项目

下一步是用bin/rails routes检查路由并得到错误

Error: Command 'routes' not recognized
Did you mean: `$ rake routes` ?

Usage: rails COMMAND [ARGS]

The most common rails commands are:
 generate    Generate new code (short-cut alias: "g")
 console     Start the Rails console (short-cut alias: "c")
 server      Start the Rails server (short-cut alias: "s")
 dbconsole   Start a console for the database specified in config/database.yml
             (short-cut alias: "db")
 new         Create a new Rails application. "rails new my_app" creates a
             new application called MyApp in "./my_app"

In addition to those, there are:
 destroy      Undo code generated with "generate" (short-cut alias: "d")
 plugin new   Generates skeleton for developing a Rails plugin
 runner       Run a piece of code in the application environment (short-cut alias: "r")

All commands can be run with -h (or --help) for more information.

在视频中,它应该返回

我试过rake route,但结果不是我在视频中预期的那样。

之后,我尝试先用bin/rails server启动服务器,但我一直收到错误:

/Users/jolin/.rvm/gems/ruby-2.7.0/gems/activesupport-4.2.2/lib/active_support/core_ext/object/duplicable.rb:85: warning: BigDecimal.new is deprecated; use BigDecimal() method instead.
=> Booting WEBrick
=> Rails 4.2.2 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
/Users/jolin/.rvm/gems/ruby-2.7.0/gems/activesupport-4.2.2/lib/active_support/core_ext/numeric/conversions.rb:121: warning: constant ::Fixnum is deprecated
/Users/jolin/.rvm/gems/ruby-2.7.0/gems/activesupport-4.2.2/lib/active_support/core_ext/numeric/conversions.rb:121: warning: constant ::Bignum is deprecated
Exiting
Traceback (most recent call last):
        9377: from bin/rails:3:in `<main>'
        9376: from bin/rails:3:in `load'
        9375: from /Users/jolin/Desktop/RoR/liborapi/bin/spring:15:in `<top (required)>'
        9374: from /Users/jolin/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
        9373: from /Users/jolin/.rvm/rubies/ruby-2.7.0/lib/ruby/2.7.0/rubygems/core_ext/kernel_require.rb:72:in `require'
        9372: from /Users/jolin/.rvm/gems/ruby-2.7.0/gems/spring-4.1.0/lib/spring/binstub.rb:11:in `<top (required)>'
        9371: from /Users/jolin/.rvm/gems/ruby-2.7.0/gems/spring-4.1.0/lib/spring/binstub.rb:11:in `load'
        9370: from /Users/jolin/.rvm/gems/ruby-2.7.0/gems/spring-4.1.0/bin/spring:49:in `<top (required)>'
         ... 9365 levels...
           4: from /Users/jolin/.rvm/gems/ruby-2.7.0/gems/activesupport-4.2.2/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
           3: from /Users/jolin/.rvm/gems/ruby-2.7.0/gems/activesupport-4.2.2/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
           2: from /Users/jolin/.rvm/gems/ruby-2.7.0/gems/activesupport-4.2.2/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
           1: from /Users/jolin/.rvm/gems/ruby-2.7.0/gems/activesupport-4.2.2/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
/Users/jolin/.rvm/gems/ruby-2.7.0/gems/activesupport-4.2.2/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>': stack level too deep (SystemStackError)

我之前遇到undefined method &lt;class:BigDecimal&gt;错误,但是在将gem 'bigdecimal', '1.4.2'添加到Gemfile之后,它就解决了,但是我找不到解决这个问题的方法。

即使在第一步我也很挣扎,我试图在不同版本中升级/降级我的 Ruby 和 Rails ...

我当前的版本:
红宝石:红宝石 2.7.0p0(2019-12-25 修订版 647ee6f091) [x86_64-darwin19]
导轨:导轨 4.2.2
(但是使用 rails -v,我总是收到弃用警告:'--rc' 的预期字符串默认值;得到 false(布尔值)。
这将在未来被拒绝,除非您在代码中明确传递选项check_default_type: false或调用allow_incompatible_default_type! 您可以通过设置环境变量 THOR_SILENCE_DEPRECATION 来消除弃用警告。)
rvm:rvm 1.29.12(最新)作者:Michal Papis、Piotr Kuczynski、Wayne E. Seguin [https://rvm.io]宝石:3.1.2

更新在尝试升级 ruby​​、降级 ruby​​、降级 rails 之后 我现在在运行 bin/rails server 时不断收到如下错误:

Traceback (most recent call last):
        4: from bin/rails:3:in `<main>'
        3: from bin/rails:3:in `load'
        2: from /Users/jolin/Desktop/RoR/liborapi/bin/spring:10:in `<top (required)>'
        1: from /Users/jolin/Desktop/RoR/liborapi/bin/spring:10:in `read'
/Users/jolin/Desktop/RoR/liborapi/bin/spring:10:in `read': No such file or directory @ rb_sysopen - /Users/jolin/Desktop/RoR/liborapi/Gemfile.lock (Errno::ENOENT)

【问题讨论】:

    标签: ruby-on-rails ruby api rubygems


    【解决方案1】:

    如屏幕截图所示,我建议在 Ruby 2.5.3 中运行它。我不认为 Rails 4.2 在 ruby​​ 2.7 中经过测试或支持。您也可以尝试安装更高版本的 ruby​​ 2.7.6。

    当前的 rails 版本是 7.0.x 和 Ruby 3.1.x。

    Segmentation fault一般是Ruby安装导致的,可以尝试安装ruby 2.7.6再试。

    【讨论】:

    • 我尝试将 ruby​​ 升级到 2.7.6,得到了同样的错误,然后我尝试将 ruby​​ 降级到 2.5.3,然后得到了in warn_for_outdated_bundler_version': You must use Bundler 2 or greater with this lockfile. (Bundler::LockfileError)
    • 我也尝试降级捆绑器,但会得到sqlite3-1.5.2-x86_64-darwin requires ruby version &gt;= 2.6, &lt;3.2.dev, which is incompatible with the current version, ruby 2.5.3p105,这需要我的红宝石是更新的版本:(
    【解决方案2】:

    rails routes 命令是在 Ruby on Rails 5.0 中引入的。在 5.0 之前的版本中,它被称为 rake routes

    这意味着由于您使用的是旧版本的 Rails,您可以简单地调用 rake routes 并获得相同的响应。

    但值得注意的是,您关注的 youtube 视频是关于 Ruby on Rails 6.0 的。但是您使用的是 Ruby on Rails 4.2.2。您的本地环境有 2 个主要版本,落后 4 年多。当您继续使用如此古老且无人维护的 Ruby on Rails 版本时,您很可能会面临更多兼容性问题。

    我建议您将本地环境至少升级到 Ruby 2.7 和 Ruby on Rails 6.2,甚至更好的 Ruby 3.1 和 Ruby on Rails 7.0。学习 Rails 是过时且未维护的版本没有任何好处。

    【讨论】:

      【解决方案3】:

      嗨,我有同样的问题

      不要使用 bin/rails routes命令只是利用rails routes

      这将解决您的问题只是让我知道这是否适合您

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-01
        • 2014-01-05
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-20
        • 2013-12-13
        相关资源
        最近更新 更多