रेक में 'पर्यावरण' कार्य क्या है?


120

" कस्टम रेक कार्य " के अनुसार :

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

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

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


नया सिंटैक्स stackoverflow.com/questions/12493337/…
जहान

जवाबों:


120

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

" कस्टम रेक कार्य " देखें ।


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

4
@odigity यहाँ दिखती है: github.com/rails/rails/blob/v4.2.4/railties/lib/rails/…
Carson Reinke

41

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

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


35

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

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


कार्य के दस्तावेज़ की विधि इसे समझने के लिए बहुत सरल है।
Albert.Qing
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.