2011-01-01 13 views
5

मैं दोनों अलग-अलग भूमिकाओं पर तैनात करने के लिए कैपिस्ट्रानो का उपयोग करने की कोशिश कर रहा हूं, दोनों पर बंडलर का उपयोग करते हुए, हालांकि बंडलर कमांड और झंडे अलग होंगे। क्या भूमिका के लिए विशिष्ट चर सेट करना संभव है? या तो कुछ की तरह:कैपिस्ट्रानो भूमिका के आधार पर चर सेट कर सकते हैं?

set :bundle_flags, "--deployment --quiet", :role => "web" 

या:

role :web do 
    set :bundler_cmd, "--deployment --quiet" 
end 

न तो उन दो विकल्पों में से निश्चित रूप से काम करते हैं,। क्या इसे पूरा करने का कोई तरीका है, या ऐसा कुछ?

उत्तर

1

प्रति भूमिका कस्टम चर मूल्यों का कोई तरीका नहीं है।

आप अपनी दो अलग-अलग भूमिकाओं के लिए अलग-अलग चरणों के लिए capistrano-ext से मल्टीस्टेज एक्सटेंशन का उपयोग कर सकते हैं। भूमिकाओं

run "bundle --deployment --quiet", :roles => :web 
run "bundle --deployment", :roles => :app 

के आधार पर अलग-अलग आदेशों के रूप में नीचे टिप्पणी, इस दृष्टिकोण में नोट कार्य स्थापित करने और चलाने के लिए, लेकिन:

विभिन्न चरणों अपने तैनाती के लिए कोई मतलब नहीं है, तो आप अपने खुद के बंडल लिख सकता है , यदि भूमिका में सर्वर परिभाषित नहीं है, तो त्रुटियां बढ़ेगी। यह क्रमशः प्रत्येक आदेश भी चलाएगा। उन दोनों मुद्दों के आसपास काम करने के लिए, समांतर सहायक का उपयोग करें।

parallel do |session| 
    session.when 'in?(:web)', "bundle --deployment --quiet" 
    session.when 'in?(:app)', "bundle --deployment" 
end 
+0

मल्टीस्टेज काम नहीं करेगा क्योंकि मैं पहले से ही विभिन्न तैनाती चरणों के लिए इसका उपयोग कर रहा हूं। साथ ही, धारावाहिकों में आदेश डालने से उन्हें एक भूमिका पर और फिर दूसरा, जो कोई समस्या हो या न हो। मेरा मानना ​​है कि यदि आपके पास कभी भी कोई सर्वर नहीं है जो किसी भूमिका से मेल खाता है तो यह एक त्रुटि भी उठाएगा। – silvamerica

+0

आप रन दृष्टिकोण के बारे में सही हैं। मैंने दोनों मुद्दों के आसपास काम करने के लिए समांतर सहायक का उपयोग करने के बारे में एक परिशिष्ट जोड़ा। –

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

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