How to fix Rails's warning messages with Ruby 2.7.0

前端 未结 4 1384
醉梦人生
醉梦人生 2021-02-02 05:33

Did anyone resolve this issue with Ruby 2.7.0?

I used rbenv and installed Ruby v2.7.0 and then created a Rails project using Rails v6.0.2

相关标签:
4条回答
  • 2021-02-02 06:12

    Obviously it will take some time to for ruby team to remove all this warning in next ruby version. For now the command in your terminal

    `RUBYOPT='-W:no-deprecated' rails s` 
    

    on my basic, plain new rails 6.0.2.1 && ruby 2.7.0 project remove these two warnings lines above in a question.

    Also, with command

    RUBYOPT='-W:no-experimental' rails s
    

    you will hide warnings about experimental features.

    You can combine these two in one command like:

    RUBYOPT='-W:no-deprecated -W:no-experimental' rails s
    

    However, I tried these commands inside my old project built with rails 5.2 and ruby 2.6.4 later upgraded to rails 6.0.1 and they didn't worked well on for all warnings messages I got from different rails Active* modules and ruby gems.

    Probably we will need some time for upgrading code and gems for new latest stuff.

    0 讨论(0)
  • 2021-02-02 06:16

    Update to Rails 6.0.3, they fixed the warnings.

    0 讨论(0)
  • 2021-02-02 06:16

    As it's just a warning and won't affect anything, you can just suppress them. I found solution 2 to be the right fit for me.

    Option 1. Start the rails server with RUBYOPT='-W:no-deprecated' rails s

    Option 2. Set export RUBYOPT='-W:no-deprecated in your bash/zsh profile

    Option 3. Set Warning[:deprecated] = false in your ruby code

    0 讨论(0)
  • 2021-02-02 06:24

    To suppress warnings like:

    warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call

    For now, simply prefix/pass the RUBYOPT environment variable to your rails commands:

    RUBYOPT='-W:no-deprecated -W:no-experimental' rails server
    or
    RUBYOPT='-W:no-deprecated -W:no-experimental' rails db:migrate

    This may not work with earlier versions of ruby.

    For backward compatibility with earlier versions of ruby prefix it with RUBYOPT='-W0' instead.

    example:

    RUBYOPT='-W0' bundle exec rspec

    If you don't want to prefix this each time you run a command, then simply add this to the last line of your .zshrc or .bashrc (whatever you're using):

    export RUBYOPT='-W:no-deprecated -W:no-experimental'
    or
    export RUBYOPT='-W0'

    Also see last point of the notes here:
    https://rubyreferences.github.io/rubychanges/2.7.html#warning-and-

    0 讨论(0)
提交回复
热议问题