为什么在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
扩展名。