Rake रूबी में एक लोकप्रिय टास्क रनर है।
टास्क क्या है?
- अपने डेटाबेस का बैकअप बनाना
- अपने टेस्ट्स चलाना
- आंकड़े इकट्ठा करना और रिपोर्ट करना
ये छोटे टास्क हैं जो Rake के बिना आपकी प्रोजेक्ट पर अलग-अलग फाइलों में बिखरे होंगे।
Rake आपके टास्क्स तक पहुंच को केंद्रीकृत करता है।
Rake कुछ चीजों को आसान भी बनाता है, जैसे एक निश्चित पैटर्न से मेल खाने वाली फाइलें ढूंढना और जो हाल ही में संशोधित हुई हैं।
एक और बात:
Rake को Rack के साथ भ्रमित न करें, बहुत समान नाम, लेकिन पूरी तरह से अलग चीजें।
- Rake एक टास्क रनर है।
- Rack रूबी सर्वर्स और फ्रेमवर्क को एक साथ काम करने में मदद करता है।
अब:
आइए Rake को और विस्तार से एक्सप्लोर करें!
Rake का उपयोग कौन करता है?
Rails!
यदि आपने Rails के साथ कुछ भी किया है, तो आप शायद rake db:migrate कमांड से परिचित हैं।
या rake routes।
वहां Rake एक्शन में है।
ध्यान दें कि Rails, वर्जन 5.0 के बाद से, आपको अधिकांश rake कमांड्स को rails के साथ कॉल करने की अनुमति देता है।
दूसरे शब्दों में:
आप rails db:migrate कर सकते हैं, लेकिन Rake अभी भी काम कर रहा है।
Rake टास्क कैसे लिखें
यहाँ एक सरल Rake टास्क है:
desc "Print reminder about eating more fruit." task :apple do puts "Eat more apples!" end
आप इस कोड को Rakefile नाम की फाइल में रख सकते हैं, या यदि आप Rails का उपयोग कर रहे हैं, तो आप इसे lib/tasks/apple.rake के तहत सेव कर सकते हैं।
इस टास्क को चलाने के लिए:
rake apple # "Eat more apples!"
टास्क के अंदर, आप सामान्य रूबी कोड लिख सकते हैं, लेकिन कुछ उपयोगी Rake मेथड्स हैं जिनका आप उपयोग कर सकते हैं।
उदाहरण के लिए:
- ruby (रूबी फाइल चलाएं)
- sh (सिस्टम कमांड्स चलाएं)
- safe_ln (अपनी फाइल सिस्टम में एक सिम्बोलिक लिंक बनाएं)
Rake में FileUtils मॉड्यूल शामिल है।
इसका मतलब है कि आप cp से फाइल्स कॉपी कर सकते हैं, mkdir_p से डायरेक्टरीज बना सकते हैं, और यहां तक कि chown से फाइल परमिशन बदल सकते हैं।
यहाँ एक उदाहरण है:
task :clean_cache do rm_r FileList["tmp/cache/*"] end
rm_r (रीकर्सन के साथ हटाएं) से सावधान रहें क्योंकि यह बिना कन्फर्मेशन के फाइल्स डिलीट कर देगा, यदि आप एक कन्फर्मेशन स्टेप जोड़ना चाहते हैं तो आप एक डिपेंडेंट टास्क जोड़ सकते हैं (इस लेख में बाद में कवर किया गया) और यदि आप जारी नहीं रखना चाहते तो एक अपवाद उठा सकते हैं।
दूसरे डायरेक्टरी के अंदर Rake कमांड्स चलाना
आप एक विशिष्ट डायरेक्टरी के अंदर Rake कमांड चलाना चाह सकते हैं।
यहाँ बताया गया है:
task :import do
puts "Importing data..."
Dir.chdir(Rails.root.join("data")) { ruby "load-data.rb" }
end
इस उदाहरण में, मैं अपने Rails प्रोजेक्ट में data फोल्डर के अंदर एक रूबी स्क्रिप्ट चला रहा हूँ।
Rake में नेमस्पेसेस का उपयोग कैसे करें
क्योंकि टास्क्स के समान नाम हो सकते हैं, उसी नाम का दो बार उपयोग करना आसान है।
यही कारण है कि Rake में नेमस्पेसेस हैं।
उदाहरण के लिए:
आप अपने सभी बैकअप टास्क्स के लिए एक backup नेमस्पेस बना सकते हैं।
इस तरह:
namespace :backup do
task :create do
# ...
end
task :list do
# ...
end
task :restore do
# ...
end
end
नेमस्पेस्ड टास्क चलाने के लिए:
rake backup:create
डिपेंडेंट टास्क्स
Rake आपको अन्य टास्क्स की एक सूची परिभाषित करने की अनुमति देता है जो वर्तमान टास्क से पहले चलनी चाहिए।
इसके साथ, आप किसी भी सेटअप को कर सकते हैं जिसकी टास्क को आवश्यकता है।
उदाहरण:
task create_examples: "load_database" do # ... end
इस उदाहरण में, load_database create_examples से पहले चलेगा।
डिपेंडेंट टास्क्स की सूची स्ट्रिंग्स की ऐरे या सिंबल्स की ऐरे भी हो सकती है।
दूसरे टास्क के अंदर Rake टास्क चलाना
यदि वर्तमान टास्क से पहले चलने वाले टास्क्स के सेट के बजाय, आप वर्तमान टास्क के अंदर एक और टास्क चलाना चाहते हैं, तो आप निम्नलिखित कोड का उपयोग कर सकते हैं।
उदाहरण:
task :coverage do ENV['COVERAGE'] = 'true' Rake::Task["test"].execute end
यह टेस्ट कवरेज और अन्य विकल्पों को सक्षम करने वाले एनवायरनमेंट वेरिएबल्स सेट करने के लिए मददगार हो सकता है।
Rake रूल्स का उपयोग कैसे करें
रूल्स फाइल एक्सटेंशन ट्रांसफॉर्मेशन को परिभाषित करते हैं।
उदाहरण:
task compress: FileList["/tmp/*.txt"].ext(".txt.gz")
rule '.txt.gz' => '.txt' do |t|
sh "gzip", "-k", "-f", t.source
end
रूल्स का उपयोग करने का लाभ यह है कि एक बार फाइल कंप्रेस हो जाने के बाद, इसे तब तक दोबारा कंप्रेस नहीं किया जाएगा जब तक कि सोर्स फाइल नहीं बदलती।
इस कोड में कुछ चीजें नोटिस करें:
- हम
FileListक्लास का उपयोग करते हैं, जो Rake का हिस्सा है, उन फाइलों की सूची को परिभाषित करने के लिए जिनके साथ हम काम करना चाहते हैं। - रूल टार्गेट एक्सटेंशन से शुरू होता है, रूल को मैच कराने के लिए हमें
FileListपर.ext(".txt.gz")का उपयोग करना होगा। - यह
.txt.gz => .txtका मतलब यह नहीं है कि हमtxt.gzसेtxtजाते हैं, यह दूसरा तरीका है। तीर हैश सिंटैक्स है।
Rake विकल्प और कमांड्स
यहाँ उपयोगी Rake विकल्पों की एक सूची है:
- rake -T (उपलब्ध टास्क्स सूचीबद्ध करें)
- rake -P (टास्क्स और उनके डिपेंडेंसीज सूचीबद्ध करें)
- rake -W (टास्क्स और जहां वे परिभाषित हैं सूचीबद्ध करें)
- rake -V (वर्बोज मोड, सिस्टम कमांड्स को इको करें)
- rake -t (डीबगिंग मोड)
- rake -f (एक विशिष्ट Rakefile का उपयोग करें)
उदाहरण के लिए, एक Rails ऐप में:
> rake -T test rake test # Runs all tests in test folder except system ones rake test:db # Run tests quickly, but also reset db rake test:system # Run system tests only
सारांश
आपने Rake के बारे में सीखा, रूबी के लिए एक लोकप्रिय टास्क रनर।
उपलब्ध टास्क्स जानने के लिए rake -T का उपयोग करें, अपने टास्क्स बनाएं और उन्हें Rakefile में जोड़ें, या lib/tasks फोल्डर के अंदर, और याद रखें कि Rake और Rack अलग-अलग चीजें हैं।

इस लेख को शेयर करना न भूलें ताकि अधिक लोग इसका आनंद ले सकें 🙂
पढ़ने के लिए धन्यवाद!