我正在尝试创建一个使用服务的rake任务。在该服务中,我想在我的数据库中加载protocol SavingViewControllerDelegate {
func sendLoginStatus(sender: ProfileViewController, status : Bool)
}
表的最后保存记录。
在我的rake文件中:
MonthlyMetrics
我require 'metrics_service'
namespace :metrics do
@metrics_service = MetricsService.new
task :calculate_metrics => [:check_for_new_month, :update_customers, :update_churn, :do_more_stuff] do
puts "Donezo!"
end
# ...more cool tasks
end
MetricsService
内的lib/metrics_service.rb
:
class MetricsService
def initialize
@metrics = MonthlyMetric.last
@total_customer_count = total_customers.count
assign_product_values
end
# Methods to do all my cool things...
end
每当我尝试运行rake:db:migrate
之类的内容时,都会出现以下错误:
NameError: uninitialized constant MetricsService::MonthlyMetric
我不确定为什么它试图以MonthlyMetric
的方式引用它......作为MetricsService
命名空间中的一个类......?这不像是我试图将MonthlyMetric
定义为 MetricsService
中的嵌套类 ...我只是想将它称为ActiveRecord查询。
我在同一目录中的其他服务中完成了其他ActiveRecord查询,例如User
。
我在这里做错了什么?
答案 0 :(得分:1)
我想如果你只是在你的rake任务结束时添加=> :environment
,那可能会解决问题。
如:
task :calculate_metrics => [:check_for_new_month, :update_customers, :update_churn, :do_more_stuff] => :environment do
我遇到了类似的问题,其中Rails没有初始化正确的环境而没有对每个rake任务进行处理。