Je passe à Rails 3.2, et l'exécution de rake db: migrate me donne plusieurs erreurs de forme:
AVERTISSEMENT DE DÉPRÉCIATION: Vous avez Rails 2.3 plugins de style dans le fournisseur/plugins! Le support de ces plugins sera supprimé dans Rails 4.0. Déplacez-les et regroupez-les) dans votre Gemfile, ou pliez-les dans votre application en tant que lib/myplugin/* et config/initializers/myplugin.rb. Voir les notes de version pour plus d'informations à ce sujet: http://weblog.rubyonrails.org/2012/01/04/Rails-3-2-0-rc2-a-été-publié . (Appelé depuis at/app/Rakefile: 7)
Ce qui est troublant, c'est que mon vendor/plugins
le répertoire est vide - existe-t-il un autre répertoire de plugins auquel il fait référence?
Utilisez-vous Heroku?
Heroku injectera des plugins dans les applications Rails 3.x .. Pour éviter cette injection dans Rails 3, incluez la gemme Rails_12factor dans votre application. ( Heroku Ruby Support 2013-10-26)
La gemme Rails_12factor est également requise dans Rails 4.
Si ce joyau n'est pas présent dans votre application, vous recevrez un avertissement lors du déploiement et vos actifs et journaux ne seront pas fonctionnels. ( Rails 4 sur Herok 2013-10-26)
Aussi récemment qu'en 2013-08, heroku a toujours injecté des plugins dans Rails 3 applications, même des applications avec les gemmes recommandées. C'était un problème avec le Ruby buildpack, et a été corrigé par PR 11 , fusionné le 2013-08-06.
Tu peux essayer
::ActiveSupport::Deprecation.silenced = true
dans votre production.rb
puisque c'est juste du bruit.
dans config/environment.rb, ajoutez:
ActiveSupport::Deprecation.silenced = true
avant d'initialiser Rails, comme ceci:
# Load the Rails application
require File.expand_path('../application', __FILE__)
ActiveSupport::Deprecation.silenced = true
# Initialize the Rails application
MyApp::Application.initialize!
De même, pour désactiver les avertissements dans les tâches de râteau, insérez la configuration de silence en haut de votre fichier râteau:
# Load the Rails application
require File.expand_path('../application', __FILE__)
ActiveSupport::Deprecation.silenced = true
# Initialize the Rails application
MyApp::Application.initialize!
Vous pouvez éventuellement envelopper cela dans un bloc pour ne faire taire qu'en production:
if ENV['Rails_ENV'] == "production"
ActiveSupport::Deprecation.silenced = true
end
La meilleure approche que j'ai trouvée est documentée ici . Cela suppose que vous avez recherché et trouvé cette question parce que vous avez des plugins à l'ancienne.
Je suis allé avec la partie Ne pas en faire un joyau du tout , car je devais pouvoir activer/désactiver les plugins pendant mon déploiement de capistrano, basé sur quelle saveur de l'application que je déployais. Avant, j'utilisais config.plugins pour spécifier le plugin à utiliser. Avec cette approche, j'utilise plutôt un "require" sur config.before_configuration.
Une manière plus propre que de simplement faire taire les avertissements, voici ce que vous pouvez faire.
Pour l'injection de l'enregistreur, vous pouvez essayer d'utiliser le nouveau joyau de Herok que Jared Beck mentionné dans sa réponse ci-dessus .
Ce que nous avons fait à la place est le suivant:
Vous pouvez empêcher Heroku d'injecter ses propres plugins si vous avez un répertoire du même nom dans votre vendor/plugins
dossier. Le dossier doit simplement exister. Heroku n'injectera alors pas son plugin, et s'il n'y a pas de code, Rails ne s'opposera pas aux avertissements de dépréciation. Nous mettons juste un fichier readme expliquant ceci dans:
vendor/plugins/Rails_log_stdout/readme.md
Le but du plugin injecté de Heroku pour la journalisation est d'activer la journalisation de style Heroku (il nécessite que les journaux soient envoyés à STDOUT, pas à un fichier). Pour récupérer cela, nous avons fait ce que j'ai décrit dans cette réponse . Des ajustements aux comportements par défaut de Heroku étaient de toute façon nécessaires pour Unicorn, nous avons donc eu deux oiseaux dans une pierre.
Mettez simplement le patch de singe suivant dans /lib/silence_heroku_warnings.rb
module Rails
class Plugin < Engine
alias :not_silenced_initialize :initialize
def initialize(root)
ActiveSupport::Deprecation.silence{ self.send :not_silenced_initialize, root }
end
end
end
et l'exiger dans config/application.rb
juste après avoir exigé Rails:
require 'Rails/all'
require File.expand_path('../../lib/silence_heroku_warnings', __FILE__)
Toutes les dépréciations des plugins de style 2.x doivent être réduites au silence. D'autres dépréciations apparaîtront.
Il semble que Heroku ait finalement résolu ce problème.
Injecting plugin 'Rails_log_stdout'
Injecting plugin 'Rails3_serve_static_assets'
Add 'Rails_12factor' gem to your Gemfile to skip plugin injection
La nouvelle façon de faire taire les avis de dépréciation est la suivante:
config.active_support.deprecation = :silence
dans votre config/environments/production.rb
fichier.