2013-02-18 20 views
8

के अंदर एक्सेस शेफ संसाधन मैं शेफ दस्तावेज़ों में और Google के माध्यम से इसका उत्तर ढूंढने का प्रयास कर रहा हूं, लेकिन मैं कुछ भी करने में सक्षम नहीं हूं। मैं एक रूबी लड़का नहीं हूं (अभी तक), इसलिए इसका जवाब "शेफ के लिए पर्याप्त रूबी" के साथ समस्या के निकट आने से हो सकता है। यहां मैं क्या करना चाहता हूं: deploy संसाधन में, before_migrate विशेषता में, मैं अपने वर्तमान नुस्खा में संसाधन निष्पादित करना चाहता हूं। मैं वर्तमान में जो कर रहा हूं वह संसाधन को केवल ब्लॉक में ही भरना है, लेकिन मुझे पता है कि ऐसा करने का एक बेहतर तरीका होना चाहिए।रूबी ब्लॉक

before_migrate do 

    template "#{app_root}/#{applet_name}/local_settings.py" do 
     source "local_settings.py.erb" 
     owner app_config['user'] 
     group app_config['group'] 
     variables(
      :database_name => app_config['postgresql']['database_name'], 
      :user => app_config['postgresql']['user'], 
      :password => app_config['postgresql']['password'] 
     ) 
     action :create 
    end 
end 

मैं के लिए क्या लक्ष्य कर रहा हूँ की तरह

before_migrate do 
    "template #{app_root}/#{applet_name}/local_settings.py".execute 
end 

कुछ तो मैं कर सकते हैं कि टेम्पलेट कोड का फिर से उपयोग है। धन्यवाद!

उत्तर

2

#chef आईआरसी चैनल में महान लोगों के लिए धन्यवाद, मैंने अपनी समस्या हल की। अधिसूचना संसाधन सीधे पहुँचा जा करने के लिए,

Chef::Resource::Notification.new("template[#{app_root}/#{applet_name}/local_settings.py", :create)

का उपयोग कर कौन सा :create कार्रवाई चलाने के लिए template संसाधन सूचित करेंगे की जरूरत है।

2

आप * before_migrate में कुछ भी नहीं की एक कार्रवाई के साथ "तैनात" संसाधन के बाहर संसाधन निर्दिष्ट कर सकते हैं और उसके बाद, * कुछ की तरह है:

before_migrate do 

     ruby_block "notify_template" do 
      block do 
       true 
      end 
      action :create 
      notifies :create, "template[#{app_root}/#{applet_name}/local_settings.py]", :immediately 
     end 

    end 

इस तरह, आप यह सूचित कर सकते हैं जब आप की जरूरत यह।

संबंधित मुद्दे