2011-04-16 10 views
58

बिल्ड-में रेक कार्य ठीक से काम, लेकिन मेरे नए कस्टम एक, परियोजना में/lib/कार्य/payments.rb लोड नहीं हो जाता है:लीग/कार्यों में मेरा कस्टम रेक कार्य रेल 3 में क्यों नहीं खोजा गया है?

namespace :payments do 
    desc "Tally payments at the end of the month" 
    task :compute => :environment do 
    BillingPeriod.compute_new_period 
    end 
end 

$ rake payments:compute 
(in /Users/rob/Code/Apps/skyfarm) 
rake aborted! 
Don't know how to build task 'payments:compute' 

अगर मैं फ़ाइल application.rb लोड यह ठीक काम करता है :

require 'lib/tasks/payments.rb' 

... लेकिन यह अन्य बातों के टूट जाता है:

$ rails s 
./lib/tasks/payments.rb:1: undefined method `namespace' for main:Object (NoMethodError) 
+0

मामले में किसी को भी यहाँ समाप्त होता है जो * नहीं * रेल का उपयोग कर: एक निर्देशिका 'rakelib' कहा जाता है में अपने' .rake' फ़ाइलें डाल दिया। –

उत्तर

155

बदलें .rb से .rake को फाइल एक्सटेंशन।

+0

यदि यह मदद नहीं करता है, तो मुझे एक समाधान मिला: http://blog.nathanhumbert.com/2010/02/rails-3-loading-rake-tasks-from-gem.html – User

0

रेल के अनुसार मार्गदर्शन 2.10 Custom Rake Tasks

कस्टम रेक कार्य एक .rake एक्सटेंशन है और Rails.root/lib/कार्य में रखा जाता है।

लेकिन आपके पास .rb एक्सटेंशन है।

19

इस विशिष्ट मामले में, .rake एक्सटेंशन होने से त्रुटि उत्पन्न हुई। हालांकि, मेरे पास आज रेल 4.2 एप के साथ एक ही समस्या थी, और ऐसा इसलिए था क्योंकि मेरे पास मेरे रेक कार्य के लिए desc नहीं था, इसलिए सुनिश्चित करें कि आप अपना खुद का कार्य लिख रहे हैं (यानी एक उत्पन्न नहीं कर रहे हैं) जिसे आप जोड़ते हैं desc

अधिक जानकारी के लिए: http://guides.rubyonrails.org/command_line.html#custom-rake-tasks

+1

जब मैंने 'हालांकि 'देखा आपका जवाब, मुझे पहले से ही पता था कि आपका जवाब मेरी समस्या का समाधान करेगा;) +1 – Aleks

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