¿Alguien resolvió este problema con Ruby 2.7.0
?
He utilizado rbenv
e instalado Rubí v2.7.0 y luego creó un proyecto Rails usando Rails v6.0.2.1
.
Actualmente, ejecutando uno de
rails s
rails s -u puma
rails s -u webrick
el servidor está activo y el sitio está servido pero en el Console
registro veo dos mensajes de advertencia:
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
Entonces, los mensajes de advertencia son:
**.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**
Respuestas:
Para suprimir advertencias como:
warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
Por ahora, simplemente prefija / pase la
RUBYOPT
variable de entorno a sus comandos de rails:RUBYOPT='-W:no-deprecated -W:no-experimental' rails server
o
RUBYOPT='-W:no-deprecated -W:no-experimental' rails db:migrate
Esto puede no funcionar con versiones anteriores de ruby.
Para compatibilidad con versiones anteriores de ruby, prefijelo con
RUBYOPT='-W0'
.ejemplo:
RUBYOPT='-W0' bundle exec rspec
Si no desea ponerle el prefijo cada vez que ejecuta un comando, simplemente agregue esto a la última línea de su
.zshrc
o.bashrc
(lo que sea que esté usando):export RUBYOPT='-W:no-deprecated -W:no-experimental'
o
export RUBYOPT='-W0'
Vea también el último punto de las notas aquí:
https://rubyreferences.github.io/rubychanges/2.7.html#warning-and-
fuente
Obviamente, el equipo de ruby tardará un tiempo en eliminar toda esta advertencia en la próxima versión de ruby. Por ahora el comando en tu terminal
en mi proyecto básico y sencillo de rieles 6.0.2.1 && ruby 2.7.0, elimine estas dos líneas de advertencia anteriores en una pregunta.
Además, con comando
ocultará advertencias sobre características experimentales.
Puede combinar estos dos en un comando como:
Sin embargo, probé estos comandos dentro de mi antiguo proyecto construido con rails 5.2 y ruby 2.6.4 más tarde actualizado a rails 6.0.1 y no funcionaron bien para todos los mensajes de advertencia que recibí de diferentes rails Módulos Active * y gemas ruby.
Probablemente necesitaremos algo de tiempo para actualizar el código y las gemas para las últimas novedades.
fuente
Como es solo una advertencia y no afectará nada. Simplemente puedes suprimirlos. Encontré que la solución 2 es la más adecuada para mí.
Opción 1. Inicie el servidor rails con
RUBYOPT='-W:no-deprecated' rails s
Opción 2. Establecer
export RUBYOPT='-W:no-deprecated
en su perfil bash / zshOpción 3. Establecer
Warning[:deprecated] = false
en su código rubyfuente