Использование ActiveRecord :: Base.transaction в грабельной задаче?

Я пишу задачу rake, которая в какой-то момент использует собственный метод импорта файла YAML для заполнения базы данных.

Задача рейка выглядит так:

desc "Seed the database with production/ data."
task :production => :environment do     
  import_yaml 'seed/production'
end

В какой-то момент кода импорта у меня есть:

ActiveRecord::Base.transaction do

При попытке запустить задачу rake выкидывает:

You have a nil object when you didn't expect it!
You might have expected an instance of ActiveRecord::Base.
The error occurred while evaluating nil.[]

Трассировка стека указывает на вышеупомянутую строку в коде.

Есть ли способ создать экземпляр ActiveRecord :: Base во время задачи рейка?

Спасибо!


person Brian Jordan    schedule 27.05.2010    source источник
comment
Это обязательно должно включать код или хотя бы образец. Кроме того, название вопроса не имеет отношения ни к проблеме, ни к решению ....   -  person rpbaltazar    schedule 18.04.2017
comment
Должен, правда? 7 лет спустя я не помню, в чем заключалась настоящая проблема / решение. Я бы удалил этот вопрос, если бы мог, но он не позволяет мне, потому что кто-то написал ответ.   -  person Brian Jordan    schedule 12.05.2017


Ответы (1)


может быть, вы не включили «окружение» в задачу по рейку?

задача rake не может получить доступ к rails.cache

task (:my_rake_task => :environment) do
    # ....
end

без среды =>: у вас не будет доступа ни к одной из ваших моделей приложений rails

person house9    schedule 27.05.2010