Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Ruby

Whenever Gem का उपयोग करके Ruby में क्रॉन जॉब्स शेड्यूल करना - एक चरण-दर-चरण गाइड

Cron की मूल बातें

हर यूज़र का एक क्रॉन फाइल हो सकता है जहां आप उन कार्यों को परिभाषित करते हैं जिन्हें आप चलाना चाहते हैं।

आप इस फाइल को crontab -e कमांड के साथ संपादित कर सकते हैं।

या crontab -l के साथ शेड्यूल्ड कार्यों को सूचीबद्ध करें।

उदाहरण क्रॉन जॉब:

 0 0 * * * /opt/rubies/ruby-2.5.1/bin/rake db:backup 

सिंटैक्स थोड़ा ट्रिकी हो सकता है और आप हर समय इन फाइलों को हाथ से संपादित नहीं करना चाहेंगे।

क्या हमारे लिए चीजों को आसान बनाने के लिए कोई gems हैं?

हाँ!

Whenever Gem का उपयोग कैसे करें

क्योंकि क्रॉन सिंटैक्स याद रखना कठिन हो सकता है हम whenever जैसे gem का उपयोग कर सकते हैं।

यह gem आपको Ruby में क्रॉन जॉब्स परिभाषित करने में मदद करता है।

पहले gem इंस्टॉल करें।

फिर, कॉन्फिगरेशन फाइल बनाएं:

 wheneverize . # [add] config/schedule.rb 

इसे खोलें।

आप कुछ कमेंटेड-आउट उदाहरण देखेंगे, यदि आप चाहें तो उन्हें डिलीट करें।

मान लीजिए हम एक बैकअप जॉब चाहते हैं जो हर घंटे चलता है।

"config/schedule.rb" फाइल के अंदर यह लिखें:

 every 1.hour do
  rake "db:backup"
end 

विकल्पों में शामिल हैं:

  • rake (आपके वर्तमान प्रोजेक्ट पर परिभाषित एक rake टास्क शुरू करें, ध्यान दें कि db:backup डिफ़ॉल्ट रूप से परिभाषित नहीं है, लेकिन आप db:version आज़मा सकते हैं)
  • runner (Ruby क्लास + मेथड, जैसे Archive.backup_now)
  • command (सिस्टम कमांड)

अब:

whenever --update-crontab कमांड चलाएं ताकि क्रॉन एंट्रीज़ जनरेट हो सकें।

आप crontab -l के साथ अपनी नई एंट्री देख पाएंगे।

मुझे यह मिला:

 0 * * * * /bin/bash -l -c 'cd /home/jesus/testing && RAILS_ENV=production bundle exec rake db:backup --silent' 

ध्यान दें कि टास्क production मोड में चलेगा।

इसे बदलना चाहते हैं?

आप इस सेटिंग का उपयोग कर सकते हैं:

 set :environment, "development" 

यह आपकी schedule.rb फाइल में सबसे ऊपर जाता है।

आप इस कमांड का भी उपयोग कर सकते हैं:

 whenever --update-crontab --set environment=development 

यह कमांड चलाते समय सभी टास्क्स को "development" वातावरण के साथ बनाता है।

अधिक Whenever उदाहरण

यह उदाहरण दिखाता है कि आप कैसे अधिक विशिष्ट हो सकते हैं।

साप्ताहिक कार्य:

 every :monday, at: "6:00 PM" do
  runner "Mail.send_weekly_newsletter"
end 

यह उदाहरण दिखाता है कि दिन में कई बार एक ही कार्य कैसे चलाएं।

दिन में दो बार कार्य चलाएं:

 every :day, at: ["12:00 AM", "12:00 PM"] do
  command "rm tmp/testing.txt"
end 

Whenever Gem लॉगिंग और ट्रबलशूटिंग

एक बार जब आपके crontab फाइल में टास्क हों (crontab -l से जांचें) तो आप जाने के लिए तैयार हैं।

अगला:

आप कैसे जानते हैं कि शेड्यूल्ड टास्क सही ढंग से काम कर रहे हैं?

आप लॉगिंग सेट अप कर सकते हैं और आउटपुट पढ़ सकते हैं।

अपनी schedule.rb फाइल के शीर्ष पर इसे जोड़कर लॉगिंग सक्षम करें।

कॉन्फिगरेशन:

 set :output, "log/cron.log" 

हर बार जब आप बदलाव करें तो whenever --update-crontab कमांड चलाना याद रखें!

लॉग फाइल अभी भी खाली है?

शेड्यूल्ड समय का इंतजार करना होगा ताकि कुछ हो सके।

बताते चलें, यदि आप लॉग्स में यह एरर देखते हैं:

 /bin/bash: bundle: command not found 

इसका मतलब है कि क्रॉन आपके द्वारा उपयोग किए जा रहे Ruby के समान वर्जन नहीं चला रहा है।

यदि आप Ruby वर्जन मैनेजर का उपयोग कर रहे हैं:

इसे .bash_profile फाइल से लोड करना सुनिश्चित करें, .bashrc के बजाय, ताकि आपके क्रॉन टास्क इसका उपयोग कर सकें।

Whenever के विकल्प

Whenever एक अच्छी तरह से मेंटेन किया गया gem है और यह बहुत अच्छा काम करता है।

लेकिन विकल्प क्या हैं?

यहाँ एक सूची है:

  • Heroku Scheduler, Heroku यूज़र्स के लिए एक मुफ्त जॉब शेड्यूलिंग एड-ऑन। क्रॉन जितना फ्लेक्सिबल नहीं लेकिन काम पूरा करता है
  • Rufus Scheduler, एक Ruby gem जो क्रॉन को इन-मेमोरी शेड्यूलर से बदल देता है
  • Sidecloq और Sidekiq-cron, दोनों Sidekiq एड-ऑन्स हैं जो Sidekiq में आवर्ती कार्य जोड़ते हैं

ध्यान दें कि दोनों Sidekiq एडऑन्स शेड्यूलिंग के लिए वास्तविक क्रॉन सिंटैक्स चाहते हैं, इसलिए यह whenever सिंटैक्स जितना अच्छा नहीं होगा।

अच्छी बात यह है कि वे Sidekiq वेब UI के साथ एकीकृत होते हैं।

सारांश

आपने Ruby में whenever gem का उपयोग करके क्रॉन जॉब्स शेड्यूल करना सीखा!

कृपया इस आर्टिकल को शेयर करें ताकि अधिक लोग इससे लाभ उठा सकें।

पढ़ने के लिए धन्यवाद।


  1. Ruby के grep मेथड में महारत: कोड उदाहरणों के साथ एक व्यावहारिक गाइड Ruby के grep मेथड में महारत: कोड उदाहरणों के साथ एक व्यावहारिक गाइड

    आइए grep मेथड के बारे में बात करते हैं। यह मेथड आपके लिए क्या कर सकता है? आप enumerable ऑब्जेक्ट्स को फ़िल्टर करने के लिए Grep का उपयोग कर सकते हैं, जैसे Arrays और Ranges। "लेकिन select पहले से ही ऐसा करता है!" हाँ, लेकिन grep अलग तरीके से काम करता है और अलग परिणाम उत्पन्न करता है। आइए कुछ

  1. Ruby के Map मेथड में महारत: उदाहरणों के साथ एक व्यावहारिक गाइड Ruby के Map मेथड में महारत: उदाहरणों के साथ एक व्यावहारिक गाइड

    Map एक Ruby मेथड है जिसका उपयोग आप Arrays, Hashes और Ranges के साथ कर सकते हैं। map का मुख्य उपयोग डेटा को ट्रांसफॉर्म करना है। उदाहरण के लिए: स्ट्रिंग्स की एक सरणी दिए जाने पर, आप हर स्ट्रिंग पर जा सकते हैं और हर कैरेक्टर को UPPERCASE बना सकते हैं। या यदि आपके पास User ऑब्जेक्ट्स की एक सूची है... आ

  1. रूबी पार्सिंग में मास्टर करें: स्क्रैच से अपना खुद का पार्सर बनाएं रूबी पार्सिंग में मास्टर करें: स्क्रैच से अपना खुद का पार्सर बनाएं

    पार्सिंग स्ट्रिंग्स के एक समूह को समझने और उन्हें किसी ऐसी चीज़ में बदलने की कला है जिसे हम समझ सकें। आप रेगुलर एक्सप्रेशन्स का उपयोग कर सकते हैं, लेकिन वे हमेशा इस काम के लिए उपयुक्त नहीं होते। उदाहरण के लिए, यह सामान्य ज्ञान है कि HTML को रेगुलर एक्सप्रेशन्स से पार्स करना शायद एक अच्छा विचार नहीं