Saya meningkatkan ke Rails 3.2, dan menjalankan rake db: migrate memberi saya beberapa kesalahan dalam formulir:
PERINGATAN DEPRECASI: Anda memiliki plugin Rails 2.3-style di vendor / plugins! Dukungan untuk plugin ini akan dihapus di Rails 4.0. Pindahkan mereka dan bundel di Gemfile Anda, atau lipat ke aplikasi Anda sebagai lib / myplugin / * dan konfigurasi / inisialisasi / myplugin.rb. Lihat catatan rilis untuk lebih lanjut tentang ini: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released . (dipanggil dari di / app / Rakefile: 7)
Apa yang membingungkan adalah bahwa vendor/plugins
direktori saya kosong - apakah ada direktori plugin lain yang dirujuk?
ruby-on-rails
heroku
ruby-on-rails-plugins
fearless_fool
sumber
sumber
Jawaban:
Apakah Anda menggunakan Heroku?
Permata rails_12factor juga diperlukan di rel 4.
Pada 2013-08, heroku selalu menyuntikkan plugin di aplikasi rails 3, bahkan aplikasi dengan permata yang direkomendasikan. Ini adalah masalah dengan buildpack ruby, dan diperbaiki oleh PR 11 , digabung pada 2013-08-06.
sumber
Anda dapat mencoba
di Anda
production.rb
karena hanya kebisingan.sumber
ActiveSupport::Deprecation.behavior = Proc.new { |msg, stack| $stderr.puts msg unless msg =~ /You have Rails 2.3-style plugins/ }
di config / environment.rb tambahkan:
sebelum menginisialisasi rel, seperti:
Demikian pula untuk menonaktifkan peringatan dalam tugas menyapu, masukkan konfigurasi pembungkaman di dekat bagian atas Rakefile Anda:
Anda dapat membungkus ini secara opsional dalam satu blok untuk hanya diam dalam produksi:
sumber
Pendekatan terbaik yang saya temukan didokumentasikan di sini . Ini dengan asumsi Anda mencari dan menemukan pertanyaan ini karena Anda memang memiliki plugin gaya lama.
Saya menggunakan Make it bukan permata sama sekali , karena saya harus dapat mengaktifkan / menonaktifkan plugin selama pemasangan capistrano, berdasarkan citarasa aplikasi yang saya gunakan. Sebelum saya menggunakan config.plugins untuk menentukan plugin apa yang digunakan. Dengan pendekatan ini saya menggunakan "memerlukan" pada config.before_configuration sebagai gantinya.
sumber
Cukup masukkan tambalan monyet berikut
/lib/silence_heroku_warnings.rb
dan membutuhkannya
config/application.rb
hanya setelah membutuhkan Rails:Semua penghentian dari plugin gaya 2.x harus dibungkam. Penghentian lainnya akan muncul.
sumber
Cara yang lebih bersih daripada hanya membungkam peringatan, inilah yang dapat Anda lakukan.
Untuk injeksi logger, Anda dapat mencoba menggunakan permata baru Heroku yang disebutkan Jared Beck dalam balasannya di atas .
Apa yang kami lakukan adalah sebagai berikut:
Anda dapat mencegah Heroku dari menyuntikkan plugin sendiri jika Anda memiliki direktori dengan nama yang sama di
vendor/plugins
folder Anda . Folder itu hanya perlu ada. Heroku tidak akan menyuntikkan plugin-nya, dan jika tidak ada kode, Rails tidak akan keberatan dengan peringatan penghentian. Kami baru saja meletakkan file readme yang menjelaskan hal ini ke:Tujuan dari plugin Heroku yang disuntikkan untuk logging adalah untuk mengaktifkan logging gaya Heroku (membutuhkan log untuk dikirim ke STDOUT, bukan ke file). Untuk mendapatkannya kembali, kami melakukan apa yang saya jelaskan dalam jawaban ini . Tweak ke perilaku standar Heroku diperlukan untuk Unicorn, jadi kami punya dua burung dalam satu batu.
sumber
.gitkeep
ke vendor / plugins / rails_log_stdout.gitkeep
adalah konvensi untuk menyimpan direktori kosong saat menggunakan git..gitkeep
adalah konvensi.Cara baru untuk membungkam pemberitahuan penghentian adalah:
dalam
config/environments/production.rb
file Anda .sumber
Sepertinya Heroku akhirnya membahas ini.
sumber