2011-03-08 12 views
5

मैं रेल एप्लिकेशन को तैनात करने के लिए कैपिस्ट्रानो का उपयोग कर रहा हूं। मैं ऐसी स्थिति के बारे में सोच रहा हूं जहां डेटाबेस परिवर्तन हुए थे, इसलिए मैं बस cap deploy नहीं कर सकता क्योंकि कोड अपडेट होने से पहले माइग्रेशन को चलाने की आवश्यकता होती है। मुझे एहसास है कि cap deploy:migrations है, लेकिन यह मेरी अपेक्षा से थोड़ा अधिक स्वचालित है। मैं चाहता हूं:कैपिस्ट्रानो तैनाती लेकिन मैन्युअल रूप से माइग्रेशन चलाएं

  1. रिलीज निर्देशिका में नया कोड पुश करें, लेकिन सिमलिंक अपडेट न करें या एप्लिकेशन को पुनरारंभ करें।
  2. सर्वर में एसएसएच, rake:db_abort_if_pending_migrations चलाएं ताकि यह पुष्टि हो सके कि माइग्रेशन जो मैं चलाना चाहता हूं वह केवल लंबित हैं, फिर मैन्युअल रूप से rake db:migrate चलाएं।
  3. तैनाती को पूरा करें, सिम्लिंक अपडेट करना और एप्लिकेशन को पुनरारंभ करना।

क्या अंतर्निहित कैपिस्ट्रानो कार्यों के साथ ऐसा करने का कोई आसान तरीका है, या मुझे इसे पूरा करने के लिए अपने स्वयं के तैनाती चरणों को लिखने की आवश्यकता होगी?

मुझे यह भी उल्लेख करना चाहिए कि मैं मामलों के बारे में सोच रहा हूं (कॉलम जोड़ने की तरह) जहां माइग्रेशन लाइव डेटाबेस पर चलाया जा सकता है। अधिक विनाशकारी परिवर्तनों के लिए मुझे एहसास है कि मुझे तैनाती के दौरान साइट को रखरखाव पृष्ठ के साथ नीचे लाने की आवश्यकता होगी।

उत्तर

5

प्रयास करें:

  1. cap deploy:update_code

  2. जिसे आप मैन्युअल सर्वर में loging वर्णित करो या के माध्यम से cap shell

  3. cap deploy:symlink deploy:restart

अधिक जानकारी के लिए cap -e deploy:update_code deploy:symlink deploy:restart deploy:shell देखें।

मुझे आशा है कि यह आपके लिए सहायक होगा।

+0

ऐसा करना चाहिए, धन्यवाद! Capistrano में कार्यों के प्रवाह पर कहीं भी कोई दस्तावेज है (यानी क्या उप-कार्य वास्तव में 'कैप तैनाती' वास्तव में किस क्रम में चलते हैं)? – jrdioko

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