Alguém resolveu esse problema Ruby 2.7.0
?
Eu usei rbenv
e instalei o Ruby v2.7.0 e criei um projeto Rails usando Rails v6.0.2.1
.
Atualmente, executando um dos
rails s
rails s -u puma
rails s -u webrick
o servidor está ativo e o site é veiculado, mas no Console
log eu vejo duas mensagens de aviso:
local:~/rcode/rb27$ rails s
=> Booting Puma
=> Rails 6.0.2.1 application starting in development
=> Run `rails server --help` for more startup options
.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/stack.rb:37: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/static.rb:110: warning: The called method `initialize' is defined here
Puma starting in single mode...
* Version 4.3.1 (ruby 2.7.0-p0), codename: Mysterious Traveller
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://127.0.0.1:3000
* Listening on tcp://[::1]:3000
Portanto, as mensagens de aviso são:
**.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/stack.rb:37: warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call**
**.rbenv/versions/2.7.0/lib/ruby/gems/2.7.0/gems/actionpack-6.0.2.1/lib/action_dispatch/middleware/static.rb:110: warning: The called method `initialize' is defined here**
Respostas:
Para suprimir avisos como:
warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
Por enquanto, basta prefixar / passar a
RUBYOPT
variável de ambiente para seus comandos rails:RUBYOPT='-W:no-deprecated -W:no-experimental' rails server
ou
RUBYOPT='-W:no-deprecated -W:no-experimental' rails db:migrate
Isso pode não funcionar com versões anteriores do ruby.
Para compatibilidade com versões anteriores de versões anteriores do ruby, prefixe-o
RUBYOPT='-W0'
.exemplo:
RUBYOPT='-W0' bundle exec rspec
Se você não quiser prefixar isso sempre que executar um comando, basta adicioná-lo à última linha do seu
.zshrc
ou.bashrc
(o que você estiver usando):export RUBYOPT='-W:no-deprecated -W:no-experimental'
ou
export RUBYOPT='-W0'
Consulte também o último ponto das notas aqui:
https://rubyreferences.github.io/rubychanges/2.7.html#warning-and-
fonte
Obviamente, levará algum tempo para a equipe do ruby remover todo esse aviso na próxima versão do ruby. Por enquanto o comando no seu terminal
no meu projeto básico e simples dos novos trilhos 6.0.2.1 && ruby 2.7.0, remova essas duas linhas de avisos acima em uma pergunta.
Além disso, com o comando
você ocultará avisos sobre recursos experimentais.
Você pode combinar esses dois em um comando como:
No entanto, tentei esses comandos dentro do meu projeto antigo, construído com o Rails 5.2 e o Ruby 2.6.4 posteriormente, atualizado para o Rails 6.0.1 e eles não funcionaram bem em todas as mensagens de aviso que recebi dos diferentes módulos Active * do rails e ruby gems.
Provavelmente precisaremos de algum tempo para atualizar o código e as gemas para obter as novidades mais recentes.
fonte
Como é apenas um aviso e não afetará nada. Você pode simplesmente suprimi-los. Eu achei a solução 2 a mais adequada para mim.
Opção 1. Inicie o servidor rails com
RUBYOPT='-W:no-deprecated' rails s
Opção 2. Defina
export RUBYOPT='-W:no-deprecated
no seu perfil bash / zshOpção 3. Defina
Warning[:deprecated] = false
no seu código rubyfonte