Ruby on Rails - rails服务器在启动后立即退出(SystemStackError)

时间:2017-01-27 21:21:21

标签: bash ruby-on-rails-4 rubygems windows-10

我在C盘中使用Windows 10 bash设置了Ruby on Rails。我已经使用rbenv进行设置并将我的ruby版本更新为2.4.0。然后,我将rails版本更新到4.2.6并运行bundle update来更新我的gem,我运行了rails服务器,但它没有启动服务器。相反,它会立即退出服务器并显示以下错误:

  

/home/yschang/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thread_safe-0.3.5/lib/thread_safe/cache.rb:155:警告:常数:: Fixnum已弃用   /home/yschang/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thread_safe-0.3.5/lib/thread_safe/cache.rb:155:警告:constant :: Fixnum已弃用   /home/yschang/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/fspath-3.0.1/lib/fspath.rb:154:警告:不推荐使用constant :: Fixnum   =&GT;引导瘦   =&GT; Rails 4.2.7.1应用程序从http://localhost:3000开发开始   =&GT;运行rails server -h以获取更多启动选项   =&GT; Ctrl-C关闭服务器   /home/yschang/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/thread_safe-0.3.5/lib/thread_safe/cache.rb:155:警告:constant :: Fixnum已弃用   /home/yschang/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-4.2.7.1/lib/active_support/core_ext/numeric/conversions.rb:121:警告:常量: :不推荐使用Fixnum   /home/yschang/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-4.2.7.1/lib/active_support/core_ext/numeric/conversions.rb:121:警告:常量: :Bignum已被弃用   退出   /home/yschang/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-4.2.7.1/lib/active_support/core_ext/numeric/conversions.rb:124:in {{1阻止(2级)'           来自/home/yschang/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-4.2.7.1/lib/active_support/core_ext/numeric/conversions.rb:131:in {{ 1}}阻止(2级)'           来自/home/yschang/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-4.2.7.1/lib/active_support/core_ext/numeric/conversions.rb:131:in {{ 1}}阻止(2级)'           来自/home/yschang/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-4.2.7.1/lib/active_support/core_ext/numeric/conversions.rb:131:in {{ 1}}阻止(2级)'           来自/home/yschang/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-4.2.7.1/lib/active_support/core_ext/numeric/conversions.rb:131:in {{ 1}} run_command!”           来自/home/yschang/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/railties-4.2.7.1/lib/rails/commands.rb:17:in block (2 levels) in <class:Numeric>': stack level too deep (SystemStackError) from /home/yschang/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-4.2.7.1/lib/active_support/core_ext/numeric/conversions.rb:131:in要求“           来自bin / rails:4:在''

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:1)

在Ruby 2.3.x或更早版本中,有一个基类Integer,您不需要实例化或直接寻址。相反,你可以用有限的精度来解决假定的快速Fixnum,或者可以处理非常大的数字的假定的较慢的Bignum。

在Ruby 2.4.0中,维护人员做出了一个真正令人惊讶的决定,即“弃用”&#39; Fixnum和Bignum,将它们都转换为Integer。使用Fixnum或Bignum的任何代码都会收到警告。任何测试或其他代码(例如42类内容都会得到答案Integer而不是Fixnum

对于想要在Ruby 2.3.x或更早版本或2.4.0或更高版本上运行的现实代码(例如gem),这是一个非常非常难以处理的变更。< / p>

Rails 4.2早于Ruby 2.4,我不知道它是否完全兼容。我的猜测是将系统的Ruby降级到2.3.3将清除你的问题。它肯定会摆脱污染你的控制台的所有警告,如果崩溃仍然发生,那么就更有可能看到相关信息泄露根本原因。