2011-08-12 17 views
89

"Custom Rake Tasks" के अनुसार:रेक में 'पर्यावरण' कार्य क्या है?

desc "Pick a random user as the winner" 
task :winner => :environment do 
    puts "Winner: #{pick(User).name}" 
end 

जहाँ तक मुझे पता है, :winner => :environment का अर्थ है "कर environmentwinner से पहले"। लेकिन environment क्या है? मुझे इसका उपयोग कब करना चाहिए?

मैंने rake -T की कोशिश की, लेकिन सूची में मुझे environment नहीं मिला।

+0

बाहर नई वाक्य रचना http://stackoverflow.com/questions/12493337/rake-aborted-undefined-method-map-for-namesymbol –

उत्तर

88

आप पर्यावरण के कार्य पर निर्भर कार्य करके अपने मॉडल, और वास्तव में, अपने पूरे पर्यावरण तक पहुंच प्राप्त कर सकते हैं। यह आपको run rake RAILS_ENV=staging db:migrate जैसी चीजें करने देता है।

"Custom Rake Tasks" देखें।

+3

कहाँ यह स्रोत में परिभाषित किया गया है की जाँच करें? मैंने पाया कि रेक कार्य कहां हैं, और मुझे एक खाली कार्य परिभाषा मिली जो 'ऐप: पर्यावरण' पर निर्भर करती है, लेकिन मुझे ऐप की परिभाषा नहीं मिल सकती है: पर्यावरण कार्य। https://github.com/rails/rails/blob/master/railties/lib/rails/tasks/engine.rake – odigity

+0

@odigity यहां जैसा दिखता है: https://github.com/rails/rails/blob/v4। 2.4/रेलटी/lib/रेल/application.rb # L454 –

31

यह आपके रेल पर्यावरण में लोड होता है ताकि आप वास्तव में अपने मॉडल का उपयोग कर सकें और क्या नहीं। अन्यथा, उन चीजों के बारे में कोई जानकारी नहीं है।

तो यदि आपने कोई कार्य किया है जो अभी puts "HI!" करता है तो आपको निर्भरताओं पर :environment कार्य जोड़ने की आवश्यकता नहीं है। लेकिन अगर आप कुछ ऐसा करना चाहते हैं जैसे User.find(1) अच्छी तरह से इसकी आवश्यकता होगी।

22

=> :environment समेत रेक को एप्लिकेशन पर्यावरण को पूरा करने के लिए बताएगा, जिससे कक्षाएं, हेल्पर्स इत्यादि जैसी चीज़ों के लिए प्रासंगिक कार्य पहुंच प्रदान की जा सके। :environment के बिना, आपको इनमें से किसी भी अतिरिक्त तक पहुंच नहीं होगी।

भी => :environment स्वयं पर्यावरण से संबंधित चर उपलब्ध नहीं करता है, उदा। environment, @environment, RAILS_ENV, आदि

+0

कार्य के दस्तावेज़ की विधि इसे समझना बहुत आसान है। –

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