Czy ktoś rozwiązał ten problem Ruby 2.7.0
?
Użyłem rbenv
i zainstalowałem Ruby v2.7.0, a następnie utworzyłem projekt Rails przy użyciu Rails v6.0.2.1
.
Obecnie, prowadząc jeden z
rails s
rails s -u puma
rails s -u webrick
serwer jest uruchomiony i witryna jest obsługiwana, ale w Console
dzienniku widzę dwa komunikaty ostrzegawcze:
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
Tak więc komunikaty ostrzegawcze to:
**.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**
Odpowiedzi:
Aby ukryć ostrzeżenia, takie jak:
warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
Na razie po prostu prefiks / przekaż
RUBYOPT
zmienną środowiskową do komend railsowych:RUBYOPT='-W:no-deprecated -W:no-experimental' rails server
lub
RUBYOPT='-W:no-deprecated -W:no-experimental' rails db:migrate
To może nie działać z wcześniejszymi wersjami Ruby.
Dla kompatybilności wstecznej z wcześniejszymi wersjami Ruby prefiks go
RUBYOPT='-W0'
zamiast.przykład:
RUBYOPT='-W0' bundle exec rspec
Jeśli nie chcesz tego prefiksować za każdym razem, gdy uruchamiasz polecenie, po prostu dodaj to do ostatniego wiersza
.zshrc
lub.bashrc
(cokolwiek używasz):export RUBYOPT='-W:no-deprecated -W:no-experimental'
lub
export RUBYOPT='-W0'
Zobacz także ostatni punkt uwag tutaj:
https://rubyreferences.github.io/rubychanges/2.7.html#warning-and-
źródło
Oczywiście minie trochę czasu, zanim zespół ruby usunie to ostrzeżenie w następnej wersji ruby. Na razie polecenie w twoim terminalu
na moim podstawowym, prostym nowym projekcie szyn 6.0.2.1 i& Ruby 2.7.0 usuwam powyższe dwa wiersze ostrzeżeń w pytaniu.
Również z poleceniem
ukryjesz ostrzeżenia o funkcjach eksperymentalnych.
Możesz połączyć te dwa w jednym poleceniu, takim jak:
Jednak wypróbowałem te polecenia w moim starym projekcie zbudowanym z szyn 5.2 i Ruby 2.6.4 później zaktualizowanym do szyn 6.0.1 i nie działały one dobrze dla wszystkich komunikatów ostrzegawczych, które otrzymałem z różnych modułów Active * i rubinowych klejnotów.
Prawdopodobnie potrzebujemy trochę czasu na aktualizację kodu i klejnotów do nowych najnowszych rzeczy.
źródło
Jest to tylko ostrzeżenie i nie wpłynie na nic. Możesz po prostu je stłumić. Uważam, że rozwiązanie 2 jest dla mnie odpowiednie.
Opcja 1. Uruchom serwer szyn za pomocą
RUBYOPT='-W:no-deprecated' rails s
Opcja 2. Ustaw
export RUBYOPT='-W:no-deprecated
w swoim profilu bash / zshOpcja 3. Ustaw
Warning[:deprecated] = false
w swoim kodzie rubyźródło