Uaktualniam do Railsów 3.2 i uruchamiam rake db: migrate daje mi kilka błędów w formularzu:
OSTRZEŻENIE O DEPRECATION: Masz wtyczki w stylu Railsów 2.3 u dostawcy / wtyczek! Wsparcie dla tych wtyczek zostanie usunięte w Railsach 4.0. Przenieś je i spakuj w swoim pliku Gemfile lub złóż je w swojej aplikacji jako lib / myplugin / * i config / initializers / myplugin.rb. Więcej informacji na ten temat można znaleźć w informacjach o wydaniu: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released . (wywoływane z at / app / Rakefile: 7)
Kłopotliwe jest to, że mój vendor/plugins
katalog jest pusty - czy istnieje inny katalog wtyczek, do którego się odwołuje?
ruby-on-rails
heroku
ruby-on-rails-plugins
nieustraszony głupiec
źródło
źródło
Odpowiedzi:
Czy używasz Heroku?
Klejnot rails_12factor jest również wymagany w rails 4.
Jeszcze w 2013-08, heroku zawsze umieszczało wtyczki w aplikacjach rails 3, nawet w aplikacjach z zalecanymi klejnotami. Był to problem z pakietem kompilacji Ruby i został rozwiązany przez PR 11 , scalony 06.08.2013.
źródło
Możesz spróbować
w twoim,
production.rb
ponieważ to tylko hałas.źródło
ActiveSupport::Deprecation.behavior = Proc.new { |msg, stack| $stderr.puts msg unless msg =~ /You have Rails 2.3-style plugins/ }
w config / environment.rb dodaj:
przed inicjalizacją szyn, na przykład:
Podobnie, aby wyłączyć ostrzeżenia w zadaniach rake, wstaw konfigurację wyciszania w górnej części pliku Rakefile:
Możesz opcjonalnie zawinąć to w blok, aby wyciszyć tylko podczas produkcji:
źródło
Najlepsze podejście, jakie znalazłem, jest udokumentowane tutaj . Jest to przy założeniu, że szukał i znalazł na to pytanie, ponieważ roboty mają wtyczek w starym stylu.
Poszedłem z częścią Make it not a gem , ponieważ musiałem mieć możliwość włączania / wyłączania wtyczek podczas wdrażania Capistrano, w zależności od tego, jaki smak wdrażanej aplikacji. Wcześniej użyłem config.plugins, aby określić, jakiej wtyczki użyć. W tym podejściu zamiast tego używam „require” na config.before_configuration.
źródło
Po prostu umieść następującą łatkę małpy w
/lib/silence_heroku_warnings.rb
i wymagaj go
config/application.rb
zaraz po zażądaniu Railsów:Wszystkie przestarzałe wtyczki w stylu 2.x powinny zostać wyciszone. Pojawią się inne wycofania.
źródło
Czystszy sposób niż tylko wyciszanie ostrzeżeń, oto co możesz zrobić.
Do wstrzyknięcia loggera możesz spróbować użyć nowego klejnotu Heroku, o którym wspomniał Jared Beck w swojej odpowiedzi powyżej .
Zamiast tego zrobiliśmy to:
Możesz zabronić Heroku wstrzykiwania własnych wtyczek, jeśli masz katalog o tej samej nazwie w swoim
vendor/plugins
folderze. Folder po prostu musi istnieć. Heroku nie wstrzyknie wtedy swojej wtyczki, a jeśli nie ma kodu, Railsy nie będą sprzeciwiać się ostrzeżeniom o wycofaniu. Po prostu umieściliśmy plik readme wyjaśniający to w:Celem wtyczki Heroku do logowania jest włączenie logowania w stylu Heroku (wymaga wysyłania logów do STDOUT, a nie do pliku). Aby to odzyskać, zrobiliśmy to, co opisałem w tej odpowiedzi . Jednorożec i tak potrzebował poprawek do domyślnych zachowań Heroku, więc dostaliśmy dwie pieczenie na jednym ogniu.
źródło
.gitkeep
vendor / plugins / rails_log_stdout.gitkeep
to konwencja, aby zachować pusty katalog podczas korzystania z git..gitkeep
jest konwencja.Nowy sposób wyciszania powiadomień o wycofaniu to:
w swoim
config/environments/production.rb
pliku.źródło
Wygląda na to, że Heroku w końcu się tym zajął.
źródło