警告:常量:: Fixnum已过时,当生成新模型时


88

我已经尝试找到一些解决方案,但是我确实找不到与运行rails命令时出现的错误相关的任何信息:

Rails生成模型书籍标题:字符串摘要:文本isbn:string

/home/vmu/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:51: warning: constant ::Fixnum is deprecated
/home/vmu/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/xml_mini.rb:52: warning: constant ::Bignum is deprecated
/home/vmu/.rbenv/versions/2.4.0/lib/ruby/gems/2.4.0/gems/activesupport-5.0.1/lib/active_support/core_ext/numeric/conversions.rb:138: warning: constant ::Fixnum is deprecated
Running via Spring preloader in process 3579
Expected string default value for '--jbuilder'; got true (boolean)
      invoke  active_record
   identical    db/migrate/20170104114702_create_books.rb
   identical    app/models/book.rb
      invoke    test_unit
   identical      test/models/book_test.rb
   identical      test/fixtures/books.yml

有人知道是什么原因导致这些错误吗?

Answers:


86

出现此警告是因为您使用的是ruby 2.4.0。

此版本引入了此更改:将Fixnum和Bignum统一为Integer

看到这里的公告:https : //www.ruby-lang.org/en/news/2016/12/25/ruby-2-4-0-released/

警告来自于rails的activesupport gem,它将在以后的版本中修复。

现在,您可以忽略这些警告。

更新: Rails 5.0.2已经发布,摆脱了警告。


1
我用ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16]但也得到这个问题。
飞机

1
如何忽略警告?运行“ rails s”失败
Sauron

@Sauron它应该不会因为警告而失败。也许您还有一些错误?
IngoAlbers

19

我通过更新导轨修复了我的问题

bundle update rails

1
这对我一直有效,直到打开新的终端为止:bundle update geocoder在Rails控制台启动之前,再次收到以下错误:/home/moi/.rvm/gems/ruby-2.4.0/gems/geo-distance-0.2.2/lib/geo-distance/core_ext.rb:13: warning: constant ::Fixnum is deprecated
Forrest Wilkins,

9

我认为您正在使用Rails 5?查看此链接(朝底部)。看起来这些警告将在版本#27458中消失。


8

如果您仅看到正在活动的支持中的这些弃用警告,则可以通过传递带有-W0选项的RUBYOPT bash变量以使其静默来消除它们。

因此,而不是rails server 尝试:RUBYOPT="-W0" rails serverRUBYOPT="-W0" bin/rails server

在Rails 5.0中,您可能想养成使用bin / rails的习惯,而不仅仅是Rails,因为这是全局Rails版本,它可能与您本地的Rails版本相同或不同。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.