2010-07-19 3 views
3

Lors de la création d'un moteur de rails en 2.3.5 en tant que plugin, comment les dépendances gem peuvent être définies dans le plugin, sans avoir à les importer dans l'environnement des applications hôte .rb?Rails 2.3.5 engine (plugin) comment spécifier les besoins en gemmes

Fondamentalement, je dois être capable d'appeler "config.gem" après que Initializer.run a été appelé par environment.rb, puisque le plugin n'a pas été chargé lorsque le bloc de configuration est dans la portée.

Ne pas utiliser le bundler pour cette application.

Répondre

0

Je pense que vous pouvez exécuter les Rails trucs Initializer dans votre init.rb par exemple juste des trucs comme:

Rails::Initializer.run do |config| 
    config.gem 'fastercsv', :version => '1.4.0'  
    config.gem 'liquid', :version => '2.0.0' 
end 

Si la mise en init.rb ne remet pas, l'un de nos moteurs a une bootfile qui contient simplement une classe avec une méthode qui contient le même élément Initialiser que ci-dessus. par exemple:

class MyBootClass 
    def self.boot_up 
    Rails::Initializer.run do |config| 
     config.gem 'fastercsv', :version => '1.4.0'  
     config.gem 'liquid', :version => '2.0.0' 
    end 
    end 
end 

Le fichier de démarrage est nécessaire dans la environment.rb et la méthode de classe appelée par exemple

require "#{File.dirname(__FILE__)}/../vendor/plugins/.../bootfile.rb" 
MyBootClass.boot_up 
+0

Merci - c'est effectivement la solution que je suis venu à contrecoeur aussi bien. Espérait garder les choses autonomes dans le plugin, mais peut-être que cela devra attendre Rails 3.0 ... – aceofspades

Questions connexes