2016-07-24 5 views
0

Я пытаюсь создать задачу рейка, которая использует службу. В этой службе я хочу загрузить последнюю сохраненную запись таблицы 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

Я думаю, что если вы просто добавите => :environment до конца своей рейк-задачи, это может решить проблему.

Как и в:

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

Я столкнулся с подобными проблемами, когда Rails не инициализирует правильную среду без этого пристегивается к каждой задаче грабли.

+1

Вы были совершенно правы! Хотя окружающая среда должна идти в пределах множества задач, в противном случае она выдает ошибку на хэш-ракете. – Doug

 Смежные вопросы

  • Нет связанных вопросов^_^