为什么在Rails 3中找不到我在lib / tasks中的自定义rake任务?


78

内置的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)

如果最终有人使用Rails,请执行以下操作:将.rake文件放在名为目录中rakelib
约瑟夫·曼斯菲尔德

Answers:



32

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

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


1
当我However在您的答案中看到时,我已经知道您的答案将解决我的问题;)+1
Aleks

真的很奇怪,但是很高兴它解决了这个问题
卡卡·鲁托

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.