2010-05-27 6 views
0

J'écris une tâche rake qui, à un moment donné, utilise une méthode d'importation de fichier YAML personnalisée pour graver la base de données.Utiliser ActiveRecord :: Base.transaction dans une tâche rake?

La tâche de coupe ressemble à:

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

À un moment donné dans le code d'importation, je:

ActiveRecord::Base.transaction do 

Essayer d'exécuter la tâche de rake lancers francs:

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.[] 

La trace de pile pointe vers la ligne mentionnée ci-dessus dans le code.

Existe-t-il un moyen d'instancier ActiveRecord :: Base lors d'une tâche rake?

Merci!

+0

ce que votre cher code? – Salil

+0

Cela devrait certainement inclure du code ou au moins un échantillon. En outre, le titre de la question ne concerne pas le problème, ni la solution .... – rpbaltazar

+0

Il devrait, non? 7 ans plus tard, je ne me rappelle pas quelle était la question/solution réelle. Je supprimerais cette question si je le pouvais mais cela ne me le permettrait pas parce que quelqu'un a écrit une réponse. –

Répondre

3

peut-être que vous n'avez pas inclus le 'environnement' dans la tâche rake?

rake task can't access rails.cache

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

sans =>: environnement vous n'aurez pas accès à l'un de vos modèles rails app

Questions connexes