2009-06-21 49 views
2

讓我們在一個Rails應用程序說你有,你在你的應用程序中使用一些寶石(我們稱他們爲「初級寶石」),並已vendored它們的便攜性。config.gem在environment.rb中

比方說,那些「初級寶石」還要求自己的寶石 - 我們將稱之爲「二次寶石」。

當你設置你的environment.rb,你不得不說:

config.gem 'primary-gem' 

任何您直接使用的寶石。

但是,你是否也需要說。 。 。

config.gem 'secondary-gem' 

即使您沒有使用明確的寶石在你的應用程序

或者是它足夠簡單,包括你的vendor/gems目錄寶石讓它通過您的應用程序得到回升?

回答

5

在部署時軌知道你的依賴,因此,如果要凍結你的寶石,那麼你可以運行

rake gems:unpack:dependencies 

將它們凍結在供應商目錄。

在運行時,加載它的依賴關係是gem的工作,通常gem會這樣做,所以config.gem'primary'應該可以工作。

2

不,你沒有,或者至少你不應該。每個GEM規範都應該包含它自己的依賴關係列表。當安裝主寶石時,RubyGems會自動安裝每個級聯的gem依賴項。

換句話說,如果A需要B中需要C + d,你只需要編寫

config.gem 'A' 

當命令

gem install A 

運行時,RubyGems的將解決所有的依賴和安裝它們。 您可以查看所有正在運行的從屬物(從Rails項目)

rake gems 

有時,創業板作者可以忘記在規範創業板的一些依賴。在這種情況下,您應該在environment.rb中指定它們以強制應用程序安裝它們。當然,最好還是聯繫GEM的維護人員,以便解決問題。

相關問題