我在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 =>引导瘦 => Rails 4.2.7.1应用程序从http://localhost:3000开发开始 =>运行
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:inblock (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:在''
非常感谢任何帮助。感谢。
答案 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将清除你的问题。它肯定会摆脱污染你的控制台的所有警告,如果崩溃仍然发生,那么就更有可能看到相关信息泄露根本原因。