2010-07-19 60 views
3

在2.3.5中創建一個作爲插件的rails引擎時,如何在插件中設置gem依賴關係,而不必將它們導入到主機應用程序環境中.RB?Rails 2.3.5引擎(插件)如何指定寶石需求

基本上,我需要能夠在environment.rb調用Initializer.run之後調用「config.gem」,因爲當配置塊在範圍內時,插件尚未加載。

不使用此應用程序的打包程序。

回答

0

我認爲你可以運行你的init.rb例如就像裏面的東西Rails的初始化器的東西:

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

如果把它放在init.rb不調用它,我們的引擎之一有bootfile只包含一個包含與上面相同的Initialiser的方法。例如:需要在environment.rb中

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 

的啓動文件,並要求如類方法

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

謝謝你 - 這是有效的解決方案我不情願地來爲好。希望能夠讓插件中的東西保持獨立,但也許這將不得不等待Rails 3.0 ... – aceofspades 2010-07-20 17:41:07