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