警告:不建议使用:: Fixnum生成新模型时

use*_*147 81 ruby ruby-on-rails ruby-on-rails-5

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

rails generate model书名: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
Run Code Online (Sandbox Code Playgroud)

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

Ing*_*ers 80

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

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

请参阅此处了解公告:https://www.ruby-lang.org/en/news/2016/12/25/ruby-2-4-0-released/

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

现在你可以忽略那些警告.

更新: Rails 5.0.2已经发布,它消除了警告.


mpa*_*cia 18

我通过更新rails修复了我的问题

bundle update rails
Run Code Online (Sandbox Code Playgroud)


jvi*_*ian 9

我假设您使用的是Rails 5?看看这个链接(朝下).看起来这些警告将随着#27458的发布而消失.


lsi*_*ert 6

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

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

在rails 5.0中你可能想要习惯使用bin/rails而不仅仅是rails,因为那是全局rails版本,可能与你的本地rails版本相同或不同.