2011-02-07 20 views
7

ढेर:क्रोंटैब से रेक कार्य?

Apache2

रेल 2.3.8

RedHat Linux

रूबी उद्यम 1.8.7

समझे मेरी एप्लिकेशन को उपयोगकर्ता के crontab में निम्नलिखित रेक कार्य जो करने के लिए है एक डेटाबेस तालिका में रिकॉर्ड खींच हर 15 मिनट:

*/15 * * * * app_user cd /var/www/apps/my_app/current/ && rake thing:do_stuff RAILS_ENV=production 

मैं क्रॉन डेमॉन क्रॉन लॉग में इस कार्य चल रहा है, लेकिन डेटाबेस तालिका में परिवर्तन नहीं करता है रिकॉर्ड खींच चाहिए था कि देख सकते हैं। यह कार्य त्रुटि के बिना काम कर रहा है जब मैं इसे मैन्युअल रूप से/var/www/apps/my_app/वर्तमान निर्देशिका में चलाता हूं, और तालिका में रिकॉर्ड खींचता हूं जैसा कि मुझे उम्मीद है।

मैं REE का उपयोग कर प्रतिबिंबित करने के लिए crontab में पथ चर रीसेट, हो सकता है डिफ़ॉल्ट पथ/opt/माणिक उद्यम के साथ जाइव नहीं होगा सोच ...

मैं वास्तव में चलाने के लिए इस रेक कार्य कैसे मिलता है क्रॉन के साथ?

+1

क्या आप इसे उस उपयोगकर्ता के रूप में भी चला रहे हैं? sudo su app_user, फिर कमांड को ठीक से चलाएं क्योंकि यह क्रॉन जॉब में है। अगर यह ऐसा काम करता है तो इसे क्रॉन में काम करना चाहिए। –

उत्तर

8

कोशिश पूर्ण पथ का उपयोग करने के द्विआधारी रेक (कंसोल which rake में चलाने के लिए और पूर्ण पथ के साथ रेक की जगह) के लिए।

उदाहरण के लिए, यदि which rake रिटर्न निम्नलिखित पथ:

/Users/bob/.rvm/gems/ruby-1.9.3-p194/bin/rake 

आप रेक कार्य चलाने के लिए निम्न आदेश का उपयोग करना चाहिए:

/Users/bob/.rvm/bin/rvm all do bundle exec rake allocator:snapshot 

और मैं पसंद जब भी माणिक में क्रॉन नौकरियों के लिए मणि

यदि कार्य क्रॉन में विफल रहा है कैसे पता लगाने के लिए? असफल क्रॉन पर ईमेल भेजने की कोशिश करता है। तो अगर आप (उदाहरण के लिए गूगल से) अपने SMTP सेटिंग का उपयोग करने पोस्टफ़िक्स कॉन्फ़िगर कर सकते हैं, और जो आपके सिस्टम में है कि cronjob चल रहा है उपयोगकर्ता के घर निर्देशिका करने के लिए केवल अपने ईमेल युक्त फ़ाइल ~/.forward जोड़ें।

10
0,15,30,45 * * * * /bin/bash -l -c 'cd /var/www/apps/my_app/current && RAILS_ENV=production bundle exec rake thing:do_stuff --silent' 
संबंधित मुद्दे