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

时间:2011-04-16 21:12:27

标签: ruby-on-rails ruby-on-rails-3 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)

3 个答案:

答案 0 :(得分:175)

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

答案 1 :(得分:25)

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

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

答案 2 :(得分:0)

根据Rails指南2.10 Custom Rake Tasks

  

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

但你有.rb分机。