Ich aktualisiere auf Rails 3.2 und wenn ich rake db: migrate ausführe, bekomme ich mehrere Fehler in der folgenden Form:
DEPRECATION WARNING: Sie haben Rails 2.3-Plugins in Hersteller / Plugins! Die Unterstützung für diese Plugins wird in Rails 4.0 entfernt. Verschieben Sie sie heraus und bündeln Sie sie in Ihrer Gemfile oder falten Sie sie als lib / myplugin / * und config / initializers / myplugin.rb in Ihre App. Weitere Informationen hierzu finden Sie in den Versionshinweisen: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released . (aufgerufen von at / app / Rakefile: 7)
Was verwirrend ist, ist, dass mein vendor/plugins
Verzeichnis leer ist - gibt es ein anderes Plugins-Verzeichnis, auf das es verweist?
ruby-on-rails
heroku
ruby-on-rails-plugins
furchtloser Dummkopf
quelle
quelle
Antworten:
Benutzt du Heroku?
Der Rails_12-Faktor-Edelstein wird auch in Rails 4 benötigt.
Noch 2013-08 hat Heroku Plugins in Rails 3-Apps eingefügt, sogar in Apps mit den empfohlenen Edelsteinen. Dies war ein Problem mit dem Ruby Buildpack und wurde durch PR 11 behoben , das am 06.08.2013 zusammengeführt wurde.
quelle
Du kannst es versuchen
in deinem
production.rb
da ist es nur lärm.quelle
ActiveSupport::Deprecation.behavior = Proc.new { |msg, stack| $stderr.puts msg unless msg =~ /You have Rails 2.3-style plugins/ }
in config / environment.rb hinzufügen:
vor dem Initialisieren von Schienen wie folgt:
Um Warnungen in Rake-Tasks zu deaktivieren, fügen Sie die Silencing-Konfiguration oben in Ihr Rakefile ein:
Sie können dies optional in einen Block einschließen, um nur die Produktion zum Schweigen zu bringen:
quelle
Der beste Ansatz, den ich gefunden habe, ist hier dokumentiert . Dies wird vorausgesetzt , Sie haben gesucht und diese Frage gefunden , weil Sie tun im alten Stil Plugins.
Ich habe mich für Make it not a gem entschieden , da ich Plugins während meiner Capistrano-Bereitstellung ein- und ausschalten musste, je nachdem, welche Art von App ich bereitstellte. Bevor ich config.plugins verwendet habe, um anzugeben, welches Plugin verwendet werden soll. Bei diesem Ansatz verwende ich stattdessen ein "require" für config.before_configuration.
quelle
Legen Sie einfach den folgenden Affen-Patch hinein
/lib/silence_heroku_warnings.rb
und fordern Sie es in
config/application.rb
gleich nach der Anforderung von Rails:Alle Abwertungen von Plugins im 2.x-Stil sollten stummgeschaltet werden. Andere Abschreibungen werden angezeigt.
quelle
Dies ist eine sauberere Methode, als nur Warnungen zum Schweigen zu bringen.
Für die Logger-Injektion können Sie versuchen, Herokus neues Juwel zu verwenden , das Jared Beck in seiner obigen Antwort erwähnt hat .
Was wir stattdessen getan haben, ist Folgendes:
Sie können Heroku daran hindern, eigene Plugins einzufügen, wenn sich in Ihrem
vendor/plugins
Ordner ein gleichnamiges Verzeichnis befindet . Der Ordner muss nur existieren. Heroku injiziert dann sein Plugin nicht und wenn es keinen Code gibt, wird Rails keine Einwände gegen Verfallswarnungen erheben. Wir haben gerade eine Readme-Datei eingefügt, die dies erklärt:Der Zweck von Herokus injiziertem Plugin für die Protokollierung besteht darin, die Protokollierung im Heroku-Stil zu aktivieren (Protokolle müssen an STDOUT und nicht an eine Datei gesendet werden). Um das zurückzubekommen, haben wir das getan, was ich in dieser Antwort beschrieben habe . Für Unicorn waren ohnehin Änderungen an Herokus Standardverhalten erforderlich, sodass wir zwei Fliegen in einer Klappe hatten.
quelle
.gitkeep
Fügen Sie besser eine leere Datei mit dem Namen vendor / plugins / rails_log_stdout hinzu. Dies.gitkeep
ist eine Konvention, um bei Verwendung von git ein leeres Verzeichnis beizubehalten ..gitkeep
eine Konvention ist.Die neue Methode zum Stummschalten von Verfallsbenachrichtigungen lautet:
in Ihrer
config/environments/production.rb
Datei.quelle
Es sieht so aus, als hätte Heroku dies endlich angesprochen.
quelle