Hat jemand dieses Problem mit gelöst Ruby 2.7.0
?
Ich habe rbenv
Ruby v2.7.0 verwendet und installiert und dann ein Rails-Projekt mit erstellt Rails v6.0.2.1
.
Derzeit durch Ausführen eines von
rails s
rails s -u puma
rails s -u webrick
Der Server ist aktiv und die Site wird bedient, aber im Console
Protokoll werden zwei Warnmeldungen angezeigt:
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
Die Warnmeldungen lauten also:
**.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**
Antworten:
So unterdrücken Sie Warnungen wie:
warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
Im Moment müssen Sie die
RUBYOPT
Umgebungsvariable einfach Ihren Rails-Befehlen voranstellen / übergeben :RUBYOPT='-W:no-deprecated -W:no-experimental' rails server
oder
RUBYOPT='-W:no-deprecated -W:no-experimental' rails db:migrate
Dies funktioniert möglicherweise nicht mit früheren Versionen von Ruby.
Aus Gründen der Abwärtskompatibilität mit früheren Versionen von Ruby wird
RUBYOPT='-W0'
stattdessen das Präfix verwendet.Beispiel:
RUBYOPT='-W0' bundle exec rspec
Wenn Sie dies nicht jedes Mal voranstellen möchten, wenn Sie einen Befehl ausführen, fügen Sie dies einfach in die letzte Zeile Ihres
.zshrc
oder.bashrc
(was auch immer Sie verwenden) ein:export RUBYOPT='-W:no-deprecated -W:no-experimental'
oder
export RUBYOPT='-W0'
Siehe auch den letzten Punkt der Notizen hier:
https://rubyreferences.github.io/rubychanges/2.7.html#warning-and-
quelle
Offensichtlich wird es einige Zeit dauern, bis das Ruby-Team diese Warnung in der nächsten Ruby-Version entfernt hat. Vorerst der Befehl in Ihrem Terminal
Entfernen Sie in meinem einfachen Projekt 6.0.2.1 && ruby 2.7.0 diese beiden Warnzeilen oben in einer Frage.
Auch mit Befehl
Sie werden Warnungen zu experimentellen Funktionen ausblenden.
Sie können diese beiden in einem Befehl wie folgt kombinieren:
Ich habe diese Befehle jedoch in meinem alten Projekt ausprobiert, das mit Rails 5.2 und Ruby 2.6.4 erstellt wurde und später auf Rails 6.0.1 aktualisiert wurde. Sie funktionierten nicht für alle Warnmeldungen, die ich von verschiedenen Rails Active * -Modulen und Ruby Gems erhalten habe.
Wahrscheinlich werden wir etwas Zeit brauchen, um Code und Edelsteine für neue neueste Sachen zu aktualisieren.
quelle
Da es nur eine Warnung ist und nichts beeinflusst. Sie können sie einfach unterdrücken. Ich fand Lösung 2 passend für mich.
Option 1. Starten Sie den Rails-Server mit
RUBYOPT='-W:no-deprecated' rails s
Option 2. Legen Sie
export RUBYOPT='-W:no-deprecated
in Ihrem Bash / Zsh-Profil festOption 3. Geben Sie
Warning[:deprecated] = false
Ihren Ruby-Code einquelle