【问题标题】:Ruby 2.4.1 - warning: constant ::Fixnum is deprecated [duplicate]Ruby 2.4.1 - 警告:不推荐使用常量 ::Fixnum [重复]
【发布时间】:2017-11-12 13:06:53
【问题描述】:

我是 StackOverflow 和 Rails 的新手,所以我希望这不是一个太幼稚的问题。我正在尝试使用 bin/rails 服务器在本地运行我的应用程序。当我输入它时,我会收到以下跟踪:

=> Booting Puma
=> Rails 4.2.5 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server

    /Users/name/.rvm/gems/ruby-2.4.1/gems/activesupport-4.2.5/lib/active_support/core_ext/numeric/conversions.rb:121: warning: constant ::Fixnum is deprecated
    /Users/name/.rvm/gems/ruby-2.4.1/gems/activesupport-4.2.5/lib/active_support/core_ext/numeric/conversions.rb:121: warning: constant ::Bignum is deprecated
    Exiting
    /Users/name/.rvm/gems/ruby-2.4.1/gems/activesupport-4.2.5/lib/active_support/core_ext/numeric/conversions.rb:125:in `block (2 levels) in <class:Numeric>': stack level too deep (SystemStackError)
        from /Users/name/.rvm/gems/ruby-2.4.1/gems/activesupport-4.2.5/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
        from /Users/name/.rvm/gems/ruby-2.4.1/gems/activesupport-4.2.5/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
        from /Users/name/.rvm/gems/ruby-2.4.1/gems/activesupport-4.2.5/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
        from /Users/name/.rvm/gems/ruby-2.4.1/gems/activesupport-4.2.5/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
        from /Users/name/.rvm/gems/ruby-2.4.1/gems/activesupport-4.2.5/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
        from /Users/name/.rvm/gems/ruby-2.4.1/gems/activesupport-4.2.5/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
        from /Users/name/.rvm/gems/ruby-2.4.1/gems/activesupport-4.2.5/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
        from /Users/name/.rvm/gems/ruby-2.4.1/gems/activesupport-4.2.5/lib/active_support/core_ext/numeric/conversions.rb:131:in `block (2 levels) in <class:Numeric>'
         ... 5603 levels...
        from /Users/name/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:68:in `require'
        from /Users/name/spending-tracker-master/bin/spring:13:in `<top (required)>'
        from bin/rails:3:in `load'
        from bin/rails:3:in `<main>'

我不相信我可以按照此处 (warning: constant ::Fixnum is deprecated When generating new model) 的说明忽略它,因为它不会在本地打开应用程序。

有人可以帮忙吗?

谢谢! 本

【问题讨论】:

  • 尝试更新 rails
  • 或者如果你能提供一个minimal reproducible example,我会给你一个更明确的答案。
  • 请注意在 Ruby V2.4 中引入的更改 here
  • 您有两个选择:将 Ruby 降级到 2.3.x 或将 Rails 升级到 5.1.x。但是旧版本的 Rails 与最新版本的 Ruby 不兼容。

标签: ruby-on-rails ruby


【解决方案1】:

Ruby 2.4 将FixnumBignum 统一为一个类Integer。当 Rails(准确地说是 ActiveSupport 的 core extensions)尝试对上述类进行猴子修补时,会发生错误。

这是 Rails 5 中的 fixed,该修复也通过 version 4.2.8 向后移植到 Rails 4.2:

大家好,

我很高兴地宣布 Rails 4.2.8 已经发布。

这是4.2系列的第一个正式支持的版本 红宝石 2.4。

您所要做的就是从 4.​​2.5 到 Rails 4.2.8 的 upgrading Rails

【讨论】:

    猜你喜欢
    • 2017-05-18
    • 2018-09-24
    • 1970-01-01
    • 2011-11-20
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 2018-03-02
    相关资源
    最近更新 更多