Je mets à niveau vers Rails 3.2 et exécuter rake db: migrate me donne plusieurs erreurs de la forme:
AVERTISSEMENT DE DÉPRÉCIATION: Vous avez des plugins de style Rails 2.3 dans le fournisseur / plugins! La prise en charge de ces plugins sera supprimée 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. Pour en savoir plus, consultez les notes de publication: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released . (appelé depuis at / app / Rakefile: 7)
Ce qui est déroutant, c'est que mon vendor/plugins
répertoire est vide - y a-t-il un autre répertoire de plugins auquel il fait référence?
ruby-on-rails
heroku
ruby-on-rails-plugins
sans peur
la source
la source
Réponses:
Utilisez-vous Heroku?
La gemme rails_12factor est également requise dans les rails 4.
Pas plus tard qu'en 2013-08, heroku injectait toujours des plugins dans les applications Rails 3, même des applications avec les gemmes recommandées. C'était un problème avec le buildpack ruby, et a été corrigé par PR 11 , fusionné le 2013-08-06.
la source
Tu peux essayer
dans votre
production.rb
car ce n'est que du bruit.la source
ActiveSupport::Deprecation.behavior = Proc.new { |msg, stack| $stderr.puts msg unless msg =~ /You have Rails 2.3-style plugins/ }
dans config / environment.rb ajoutez:
avant d'initialiser les rails, comme ceci:
De même, pour désactiver les avertissements dans les tâches de rake, insérez la configuration de mise en sourdine près du haut de votre Rakefile:
Vous pouvez éventuellement envelopper ceci dans un bloc pour ne faire taire que la production:
la source
La meilleure approche que j'ai trouvée est documentée ici . Ceci est en supposant que vous cherché et trouvé à cette question parce que vous n'avez des plugins de style ancien.
Je suis allé avec la partie Make it not a gem du tout , parce que je devais pouvoir activer / désactiver les plugins pendant mon déploiement de capistrano, en fonction de la 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.
la source
Il suffit de mettre le patch de singe suivant dans
/lib/silence_heroku_warnings.rb
et l'exigent
config/application.rb
juste après avoir exigé des rails:Toutes les dépréciations des plugins de style 2.x doivent être réduites au silence. D'autres dépréciations apparaîtront.
la source
Une manière plus propre que de faire taire les avertissements, voici ce que vous pouvez faire.
Pour l'injection de l'enregistreur, vous pouvez essayer d'utiliser la nouvelle gemme d'Heroku que Jared Beck a mentionnée dans sa réponse ci-dessus .
Ce que nous avons fait à la place, c'est ceci:
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 juste exister. Heroku n'injectera alors pas son plugin, et s'il n'y a pas de code, Rails ne s'opposera pas aux avertissements d'obsolescence. Nous venons de mettre un fichier readme expliquant cela dans: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 obtenu deux oiseaux en une pierre.
la source
.gitkeep
à vendor / plugins / rails_log_stdout.gitkeep
est une convention pour garder un répertoire vide lors de l'utilisation de git..gitkeep
une convention.La nouvelle façon de désactiver les avis d'obsolescence est la suivante:
dans votre
config/environments/production.rb
dossier.la source
Il semble qu'Heroku ait enfin résolu ce problème.
la source