Saturday, 15 May 2010

ruby on rails - How do I keep whenever/capistrano from overwriting jobs for other environments? -


मेरे पास दो वातावरण हैं, स्टेजिंग और उत्पादन , एक सर्वर पर Capistrano 3 के साथ तैनात किया जा रहा है। प्रत्येक पर्यावरण के लिए तैनात प्रत्येक दूसरे को पूरी तरह से अन्य पर्यावरण की नौकरियों की जगह, एक दूसरे को दबाना।

  • अगर मैं मंचन को तैनात करते हैं, तो सभी क्रोनोज़ को निकाल दिया जाता है और स्टेजिंग रिहाई पथ और पर्यावरण को संदर्भित नौकरियों के साथ बदल दिया जाता है। उत्पादन नौकरियां हटा दी जाती हैं।
  • अगर मैं उत्पादन को लागू करता हूं, तो सभी क्रोनोज़ निकाल दिए जाते हैं और उत्पादन रिलीज पथ और पर्यावरण स्टेजिंग नौकरियां हटा दी जाती हैं।
  • अगर मैं केस में schedule.rb पर करता हूं @ पर्यावरण , और केवल एक के लिए सेट की नौकरियां होती हैं, जब 'उत्पादन' स्थिति होती है, तब जब स्टेजिंग तैनात किया जाता है तो यह पूरी तरह से क्रोनबॉज साफ़ करता है

मुझे इन दो स्थितियों में से किसी एक से मिलना होगा:

  • दो सेट ऑफ जॉब (एक स्टेजिंग और उत्पादन के लिए एक) जो कि पर्यावरण की तैनाती के माध्यम से प्रत्येक को जारी रखते हैं (इसलिए, नीचे मेरे उदाहरण में, दो नौकरियां सूचीबद्ध होंगी - एक स्टेजिंग रिहाई और उत्पादन रिलीज के लिए एक)
  • नौकरियों का एक सेट (केवल उत्पादन के लिए) जो कि पर्यावरण की तैनाती के माध्यम से बनी रहती है (इसलिए, तैनाती परिनियोजन इसे दूर नहीं करना चाहिए)

क्या कोई यह समझा सकता है कि यह कैसे किया जाता है?

संस्करण

  • capistrano: 3.3.5
  • < Li> जब भी: 0.9.4
  • रूबी: 2.1.5
  • रेल: 3.2.21

कैपफ़ाइल

  'whenever / capistrano'  

config / deploy / deploy.rb में प्रासंगिक लाइन की आवश्यकता है

  सेट: एप्लिकेशन, 'application_name'  

config / deploy / production.rb

  सर्वर '1.2। 3.4 ', उपयोगकर्ता:' उपयोगकर्ता नाम ', भूमिकाएं:% w {web app} सेट: शाखा,' मास्टर 'सेट: तैनाती_तो,' / घर / उपयोगकर्ता नाम / उत्पादन 'सेट: rails_env,' उत्पादन 'सेट: चरण,: उत्पादन सेट : Whenever_environment, - & gt; {फ़ेच (: स्टेज)} सेट करें: जब भी_निश्चितता, - & gt; {"# {Fetch (: application)} _ # {fetch (: stage)}"}  

कॉन्फ़िग / परिनियोजित / स्टेजिंग.आरबी

सेट: deploy_to, '/ home / username / स्टेजिंग' सेट: rails_env, 'set' 'स्टेजिंग' सेट: स्टेज, स्टेजिंग सेट: whenever_environment, - & gt; {फ़ेच (: स्टेज)} सेट करें: जब भी_निश्चितता, - & gt; {"# {आनयन (: एप्लिकेशन)} _ # {फ़ेच (स्टेज)}"}

कॉन्फ़िग / शेड्यूल.आरबी

  सेट: आउटपुट, '/log/cron.log' हर 10 मिनट तक रनर 'ModelName.method_name' एंड  

एक स्टेजींग परिनियोजित करें

  # शुरू करें जब भी कार्य करता है: application_name 0,10,20,30,40,50 * * * * / bin / bash -l - सी 'सीडी / होम / उपयोगकर्ता नाम / स्टेजिंग / रिलीज़ / 20150317012814 & amp; amp; स्क्रिप्ट / रेल रनर -ई स्टेजिंग '\' 'ModelName.method_name' \ '' & gt; & gt; /log/cron.log 2 & gt; और amp; 1 # # जब भी कार्यों को उत्पन्न किया जाता है: application_name  

आपके पास वास्तविक क्रॉन नौकरियों के आसपास कोई टिप्पणी ब्लॉक नहीं है? मेरे पास एक पुरानी रेल 3 ऐप है जो इसका उपयोग करता है (और सिर्फ यह) और यह काम करता है शायद यह मदद करेगा:

  config / deploy.rb: set: whenever_environment, defer {stage} config / deploy.rb: set: whenever_identifier, defer {"# {application} _ # {चरण} } "} Config / deploy.rb: set: whenever_command, 'bundle exec जब भी'  

No comments:

Post a Comment