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 en utilisant 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 journal Console
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**
Pour supprimer les 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 variable d'environnement RUBYOPT
à vos commandes Rails:
RUBYOPT='-W:no-deprecated -W:no-experimental' Rails server
ouRUBYOPT='-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 avec RUBYOPT='-W0'
au lieu.
exemple:
RUBYOPT='-W0' bundle exec rspec
Si vous ne voulez pas le préfixer à 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'
ouexport RUBYOPT='-W0'
Voir également le dernier point des notes ici:
https://rubyreferences.github.io/rubychanges/2.7.html#warning-and-
Évidemment, il faudra un certain temps pour que l'équipe Ruby supprime tout cet avertissement dans la prochaine version Ruby. Pour l'instant, la commande dans votre terminal)
`RUBYOPT='-W:no-deprecated' Rails s`
sur mon projet basique et simple Rails 6.0.2.1 && Ruby 2.7.0 project supprimer ces deux lignes d'avertissement ci-dessus dans une question).
Aussi, avec la commande
RUBYOPT='-W:no-experimental' Rails s
vous masquerez les avertissements concernant les fonctionnalités expérimentales.
Vous pouvez combiner ces deux commandes en une comme:
RUBYOPT='-W:no-deprecated -W:no-experimental' Rails s
Cependant, j'ai essayé ces commandes dans mon ancien projet construit avec Rails 5.2 et Ruby 2.6.4 mis à niveau plus tard vers Rails 6.0.1 et ils n'ont pas bien fonctionné pour tous les messages d'avertissement que j'ai reçus de différents modules Rails Active * et Ruby gemmes).
Nous aurons probablement besoin d'un peu de temps pour mettre à jour le code et les gemmes pour les dernières nouveautés.
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
dans votre profil bash/zsh
Option 3. Définissez Warning[:deprecated] = false
dans votre Ruby code