2010-05-27 3 views
0

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

Задача рейка выглядит следующим образом:

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

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

ActiveRecord::Base.transaction do 

Попытка запустить задачу грабли бросает:

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 во время рейк-задачи?

Спасибо!

+0

насчет вашего кода дорогой? – Salil

+0

Это обязательно должно содержать код или хотя бы образец. Кроме того, название вопроса не связано с проблемой или решением. – rpbaltazar

+0

Это должно быть, правильно? 7 лет спустя я не помню, какова была фактическая проблема/решение. Удалил бы этот вопрос, если бы мог, но это не позволит мне, потому что кто-то написал ответ. –

ответ

3

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

rake task can't access rails.cache

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

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

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