2012-05-30 18 views
6

मुझे सक्रिय मोडेल कैशिंग का समर्थन करने वाले मणि में से एक के साथ कुछ समस्याएं हैं। जब मैं कैश मॉडल के लिए पर्यवेक्षक का उपयोग कर रहा हूं, एप्लिकेशन प्रारंभिकरण के दौरान यह सभी फ़ील्ड नाम प्राप्त करने के लिए तालिका का वर्णन करने का प्रयास करता है।मेरे रेल मॉडल में वर्तमान रेक कार्य का नाम कैसे प्राप्त करें?

रेक कार्य चल रहा है, वही काम किया जाता है, जिसमें डीबी: माइग्रेशन शामिल है। उस स्थिति में कुछ परिपत्र संदर्भ त्रुटि है। मैं मणि प्रारंभिकता को छोड़ने के लिए वर्तमान रेक कार्य का पता लगाना चाहता हूं, लेकिन मुझे नहीं पता कि कैसे रेक को कार्य के माध्यम से कोड को बुलाया गया था। इसे कैसे जांचें?

+0

"सक्रिय मडेल कैशिंग का समर्थन करने वाले मणि में से एक" - कौन सा? –

उत्तर

1

आप rake task या bundle exec rake task के माध्यम से अपने काम चलाते हैं तो आप बस अपने प्रारंभकर्ता में यह जांच कर सकते हैं द्वारा:

if $0.end_with?('rake') 
    # rake stuff 
else 
    # non-rake stuff 
end 

आप $PROGRAM_NAME बजाय $0 उपयोग कर सकते हैं यदि आप चाहें।

11

मैं बिल्कुल ठीक नहीं करता जो आप करने की कोशिश कर रहे हैं, लेकिन यहां कार्य का नाम प्राप्त करने का एक उदाहरण है।

task :testing do |task_name| 
    puts task_name 
    end 
+0

यदि आपके पास नामांकित कार्य हैं, तो इसे 'task_name.name.split (': ')' काम करना चाहिए। अंतिम '(रेक v10.4.2 में)। – spyle

8

यह सवाल कुछ स्थानों पर कहा गया है, और मुझे नहीं लगता था किसी भी उत्तर को बहुत अच्छे थे ... मुझे लगता है कि जवाब Rake.application.top_level_tasks है, जो कि चलाया जाएगा कार्यों की एक सूची है की जाँच करने के लिए है । रेक आवश्यक रूप से एक कार्य नहीं चलाता है।

+0

यूप, प्रश्न प्राप्त करने के बारे में पूछे जाने वाले प्रश्न और चयनित उत्तर से पता चलता है कि आप रेक रेक में हैं या नहीं। यह सही जवाब है। – method

+0

मुझे लगता है कि यह 'do | task name |' जोड़ने से अधिक सुरुचिपूर्ण है। –