2016-11-04 60 views
0

我有一個廚師12.5風格的自定義資源,需要安裝gem才能在load_current_value塊中「要求」它。我嘗試使用chef_gem資源,但當我在那裏使用時,我在chef_gem上得到了一個N​​oMethodError。這工作:廚師12.5式自定義資源:安裝load_current_value塊所需的gem?

load_current_value do 
    Chef::Resource::ChefGem.new 'inifile' do 
    compile_time true 
    end 
    require 'inifile' 
    # ... load_current_value code 
end 

...但顯式調用Chef::Resource::ChefGem.new似乎是錯誤的,或者至少是 「不雅」。

這使寶石可用於行動,這很方便。但是我想知道是否有更合適的方法在load_current_value塊中(或之前)安裝chef_gem?

回答

2

如果我沒有記錯的廚師12.8它可能specify gems in metadata.rb(找寶石關鍵字):

Specifies a gem dependency to be installed via the chef_gem resource after 
all cookbooks are synchronized, but before any other cookbook loading is 
done. Use this attribute once per gem dependency. 

我覺得這是「東西」,你正在尋找。

+0

是的,謝謝。這是正確的答案。這在一般情況下工作,並解決我的''load_current_value''問題。 因爲使用''gem'mysql2'''這樣崩潰了(希望是一個暫時的問題,由於缺少包依賴),所以我放棄了 - 忘記了 - 使用元數據解決方案。 –

+0

問題在於,當廚師啓動時,在編譯器或mysql庫可用之前(假設您通過配方安裝這些庫),它會安裝gem。這可能導致訂購困難。 – coderanger

+0

..它需要你的cheffed主機都可以訪問rubygems.org或者臨時gem下載代理。 安全問題很有趣。 – user2066657