警告:常量 ::Fixnum 在生成新模型时已弃用

warning: constant ::Fixnum is deprecated When generating new model

我试图为此找到一些解决方案,但我真的找不到与我 运行 rails 命令时出现的错误相关的任何内容:

rails generate model Book title:string summary:text 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

有人知道可能导致这些错误的原因吗?

我假设您使用的是 Rails 5?查看 this link(朝向底部)。看起来这些警告将随着版本 #27458 消失。

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

此版本引入了此更改:Unify Fixnum and Bignum into Integer

公告见此处:https://www.ruby-lang.org/en/news/2016/12/25/ruby-2-4-0-released/

警告来自 activesupport gem,它是 rails 的一部分,将在即将发布的版本中修复。

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

更新: Rails 5.0.2 has been released,消除了警告。

如果主动支持中的这些弃用警告是您看到的唯一警告,您可以通过传递带有 -W0 选项的 RUBYOPT bash 变量来抑制它们。

所以而不是 rails server 尝试:RUBYOPT="-W0" rails serverRUBYOPT="-W0" bin/rails server

在 rails 5.0 中,您可能希望养成使用 bin/rails 的习惯,而不仅仅是 rails,因为这是全球性的 rails 版本,可能会也可能不会与本地 rails 版本相同。

我通过更新 rails

修复了我的问题
bundle update rails

我修复了此更新 therubyracer gem 从版本“0.12.2”到“0.12.3”