1

j'ai essayé de désactiver le chargement automatique des plug-ins dans mon environment.rb pour la tâche de coupe « gemmes: installer », car il peut conduire à des dépendances non résolues et des erreurs (lire http://blog.joopp.com/2009/01/26/plugin-gem-dependencies-in-your-environmentrb/ pour plus d'informations).Rails: obtenir le nom de la tâche rake appelée dans environment.rb?

Alors que la mise en œuvre de cette « hack », je me suis vite remarqué que la variable $ rails_gem_installer, qui devrait être définie sur true si gemmes: installation est exécuté, est pas défini. (= nil)

Maintenant, je cherche un moyen d'obtenir des informations sur la tâche rake appelé, ou existe-t-il une autre solution de travail?

Im Rails de course 2.3.10/Ruby 1.8.7

Voici le code de mon environment.rb pour une meilleure compréhension:

Rails::Initializer.run do |config| 

# fix for plugins dependent on gems 
# see http://blog.joopp.com/2009/01/26/plugin-gem-dependencies-in-your-environmentrb/ 

if $rails_gem_installer 
# We stop the initializer to load the files from the /config/initializers dir. This is to disable the usage of plugins or gems in that code. 
puts 'Disabling the application initializers (rails_gem_installer == true)' 
class Rails::Initializer 
    def load_application_initializers; end 
end 

# Next, do _only_ load the needed plugins that are not dependent on gems. For example exception_notification since that one is used in application.rb. 
puts 'Not loading all plugins (rails_gem_installer == true)' 
config.plugins = [:exception_notification] 
else 
# Otherwise, when we're just loading the environment.. load everything in the right order. So this is YOUR config.plugins = [something]! 
config.plugins = [:all] 
end 

[... stuff like config.gem and so on] 
+0

Je ne sais pas ce que vous essayez de faire. Mais si vous avez besoin de pirater le comportement par défaut de Rails comme ceci, vous le faites probablement mal. – Ariejan

+0

Si vous avez déjà été dans une situation où un plugin (fournisseur/plugins) dépendait d'une gemme, vous pourriez comprendre le problème et pourquoi j'ai besoin de cette solution pour déployer avec Capistrano – Makibo

Répondre

1

Au lieu d'aller sur la route d'obtenir rake gems:install fonctionne correctement , qui était quelque chose qui ne semblait jamais fonctionner correctement dans toutes les situations, il pourrait être préférable de porter vos dépendances à bundler à la place. Bien que Rails 3 soit configuré par défaut, il peut être utilisé sur n'importe quel projet ruby ​​et fait un bien meilleur travail.

Un Gemfile sert également de manifeste lisible par un humain de dépendances, quelque chose qui n'est pas toujours facilement extrait d'un fichier de configuration Rails.

Il y a un exemple sur l'utilisation Bundler avec Rails 2.3 sur leur site: http://gembundler.com/rails23.html

+1

Merci - nous définissons notre chemin de migration vers Rails 3 atm et peut-être que nous devrions passer à Bundler comme une première étape ... – Makibo

+1

Nous avons maintenant déménagé avec succès à Bundler :) Merci encore pour cette poussée dans la bonne direction – Makibo

+0

Content de savoir que cela a fonctionné! – tadman