Quelqu'un a-t-il résolu ce problème avec Ruby 2.7.0
?
J'ai utilisé rbenv
et installé Ruby v2.7.0 puis créé un projet Rails à l'aide Rails v6.0.2.1
.
Actuellement, en exécutant l'un des
rails s
rails s -u puma
rails s -u webrick
le serveur est en place et le site est servi mais dans le Console
journal je vois deux messages d'avertissement:
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
Ainsi, les messages d'avertissement sont:
**.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**
Réponses:
Pour supprimer des avertissements tels que:
warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
Pour l'instant, il suffit de préfixer / passer la
RUBYOPT
variable d'environnement à vos commandes rails:RUBYOPT='-W:no-deprecated -W:no-experimental' rails server
ou
RUBYOPT='-W:no-deprecated -W:no-experimental' rails db:migrate
Cela peut ne pas fonctionner avec les versions antérieures de ruby.
Pour une compatibilité descendante avec les versions antérieures de ruby, préfixez-le à la
RUBYOPT='-W0'
place.exemple:
RUBYOPT='-W0' bundle exec rspec
Si vous ne voulez pas préfixer cela à chaque fois que vous exécutez une commande, ajoutez simplement ceci à la dernière ligne de votre
.zshrc
ou.bashrc
(quoi que vous utilisiez):export RUBYOPT='-W:no-deprecated -W:no-experimental'
ou
export RUBYOPT='-W0'
Voir également le dernier point des notes ici:
https://rubyreferences.github.io/rubychanges/2.7.html#warning-and-
la source
Évidemment, il faudra un certain temps à l'équipe de rubis pour supprimer tous ces avertissements dans la prochaine version de rubis. Pour l'instant la commande dans votre terminal
sur mon projet basique et simple de rails 6.0.2.1 && ruby 2.7.0, supprimez ces deux lignes d'avertissement ci-dessus dans une question.
Aussi, avec la commande
vous masquerez les avertissements concernant les fonctionnalités expérimentales.
Vous pouvez combiner ces deux commandes en une comme:
Cependant, j'ai essayé ces commandes à l'intérieur de mon ancien projet construit avec rails 5.2 et ruby 2.6.4 mis à niveau plus tard vers rails 6.0.1 et elles n'ont pas bien fonctionné pour tous les messages d'avertissement que j'ai reçus de différents modules rails actifs * et rubis gemmes.
Nous aurons probablement besoin d'un peu de temps pour mettre à niveau le code et les gemmes pour les dernières nouveautés.
la source
Comme c'est juste un avertissement et n'affectera rien. Vous pouvez simplement les supprimer. J'ai trouvé que la solution 2 me convenait parfaitement.
Option 1. Démarrez le serveur rails avec
RUBYOPT='-W:no-deprecated' rails s
Option 2. Définissez
export RUBYOPT='-W:no-deprecated
votre profil bash / zshOption 3. Définissez
Warning[:deprecated] = false
votre code rubisla source