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

zam*_*ezi 73 rake ruby-on-rails ruby-on-rails-3

内置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'
Run Code Online (Sandbox Code Playgroud)

如果我加载文件application.rb它工作正常:

require 'lib/tasks/payments.rb'
Run Code Online (Sandbox Code Playgroud)

......但它打破了其他事情:

$ rails s
./lib/tasks/payments.rb:1: undefined method `namespace' for main:Object (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

Mic*_*ley 185

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


ace*_*reg 29

在这种特定情况下,没有.rake扩展导致错误.但是,我今天在Rails 4.2应用程序上遇到了同样的问题,这是因为我没有desc执行rake任务,所以请确保你编写自己的任务(即不生成一个)你添加了一个desc.

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