尝试引用服务中的数据库记录时未初始化的常量错误

时间:2016-07-24 22:34:03

标签: ruby-on-rails namespaces rake

我正在尝试创建一个使用服务的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

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

我想如果你只是在你的rake任务结束时添加=> :environment,那可能会解决问题。

如:

task :calculate_metrics => [:check_for_new_month, :update_customers, :update_churn, :do_more_stuff] => :environment do

我遇到了类似的问题,其中Rails没有初始化正确的环境而没有对每个rake任务进行处理。