Adakah yang bisa mengatasi masalah ini Ruby 2.7.0
?
Saya menggunakan rbenv
dan menginstal Ruby v2.7.0 dan kemudian membuat proyek Rails menggunakan Rails v6.0.2.1
.
Saat ini, dengan menjalankan salah satu
rails s
rails s -u puma
rails s -u webrick
server sudah habis dan situs dilayani tetapi dalam Console
log saya melihat dua pesan peringatan:
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
Jadi, pesan peringatannya adalah:
**.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**
Jawaban:
Untuk menekan peringatan seperti:
warning: Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call
Untuk saat ini, cukup awali / lulus
RUBYOPT
variabel lingkungan ke perintah rails Anda:RUBYOPT='-W:no-deprecated -W:no-experimental' rails server
atau
RUBYOPT='-W:no-deprecated -W:no-experimental' rails db:migrate
Ini mungkin tidak berfungsi dengan versi ruby yang lebih lama.
Untuk kompatibilitas dengan versi awalan ruby sebelumnya dengan itu
RUBYOPT='-W0'
.contoh:
RUBYOPT='-W0' bundle exec rspec
Jika Anda tidak ingin awalan ini setiap kali Anda menjalankan perintah, cukup tambahkan ini ke baris terakhir Anda
.zshrc
atau.bashrc
(apa pun yang Anda gunakan):export RUBYOPT='-W:no-deprecated -W:no-experimental'
atau
export RUBYOPT='-W0'
Juga lihat poin terakhir dari catatan di sini:
https://rubyreferences.github.io/rubychanges/2.7.html#warning-and-
sumber
Jelas akan membutuhkan waktu bagi tim ruby untuk menghapus semua peringatan ini dalam versi ruby berikutnya. Untuk saat ini perintah di terminal Anda
pada proyek dasar, rel baru 6.0.2.1 && ruby 2.7.0 saya menghapus dua baris peringatan di atas dalam sebuah pertanyaan.
Juga, dengan perintah
Anda akan menyembunyikan peringatan tentang fitur eksperimental.
Anda dapat menggabungkan kedua perintah ini dalam satu seperti:
Namun, saya mencoba perintah-perintah ini di dalam proyek lama saya yang dibangun dengan rail 5.2 dan ruby 2.6.4 kemudian ditingkatkan menjadi rail 6.0.1 dan mereka tidak bekerja dengan baik untuk semua pesan peringatan yang saya dapatkan dari modul Active * rail yang berbeda dan permata ruby.
Mungkin kita perlu waktu untuk meningkatkan kode dan permata untuk hal-hal baru terbaru.
sumber
Sebagai peringatan saja dan tidak akan mempengaruhi apa pun. Anda cukup menekannya. Saya menemukan solusi 2 yang cocok untuk saya.
Opsi 1. Mulai server rel dengan
RUBYOPT='-W:no-deprecated' rails s
Opsi 2. Atur
export RUBYOPT='-W:no-deprecated
di profil bash / zsh AndaOpsi 3. Atur
Warning[:deprecated] = false
dalam kode ruby Andasumber