为什么在Rails 3中没有发现lib / tasks中的自定义rake任务?

内置rake任务工作正常,但我的新的自定义之一,在Project / lib / tasks / payments.rb不会被加载:

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) 

将文件扩展名从.rb更改为.rake

在这种特殊情况下,不具有.rake扩展名会导致错误。 不过,我今天和Rails 4.2应用程序有同样的问题,那是因为我没有用于我的耙子任务的desc ,所以请确定你是否正在编写自己的任务(即不生成任务) desc

有关更多信息: http : //guides.rubyonrails.org/command_line.html#custom-rake-tasks

根据Rails指南2.10自定义Rake任务

自定义rake任务有一个.rake扩展名,放在Rails.root / lib / tasks中。

但是你有.rb扩展名。