2011-07-19 13 views
1

我正在創建一個Rails插件(是的,我需要一個插件,而不是一個寶石)。自帶Rails插件與寶石的傾向?

這個插件有幾個gem依賴關係。我的第一個想法是將依賴項列在插件目錄根目錄下的Gemfile中。

從install.rb,我做了以下內容:

`bundle install` 

然後再從init.rb,我做了以下內容:

require 'rubygems' 
require 'bundler/setup' 
Bundler.require 

但捆綁器沒有明確這些依賴關係。

我做不是想要列出根Gemfile中的gem依賴關係。

有沒有什麼辦法可以將這些gem包含在插件中,並讓它在沒有最終用戶修改自己的Gemfile的情況下工作?如果還有其他一些機制來吸引Rails插件的gem dependencies,我不會反對將Bundler全部拋棄在一起嗎?

回答

1

它不需要你的寶石,因爲寶石環境(寶石集,無論)已經由應用程序設置。

插件的gem env與應用程序的gem env無法分離,原因很簡單,即插件在應用程序內部運行。

因此,插件運行在應用程序的gem env中。

如果應用程序的gem env由Bundler管理,那麼您的依賴關係必須在應用程序的Gemfile中定義。否則,無論您在插件內部需要什麼,它們都不會在Bundler隔離的gem env中提供。

這是將插件作爲寶石發佈更實用的原因之一。