2011-06-20 3 views
0

J'essaye d'exécuter cette migration sur heroku, mais elle se bloque à la boucle. Malheureusement, je ne peux pas dire exactement où elle est suspendue car aucun de mes "put" n'est affiché dans la console. La dernière ligne que je reçois est:Rake de base de données Heroku avec la boucle

-- add_column(:batches, :store_id, :integer) 

Je ne suis pas en mesure d'obtenir des migrations avec une boucle de travail sur Heroku, mais ils ont tous fonctionnent très bien au niveau local, que je fais quelque chose de mal?

sortie des journaux de Heroku:

2011-06-20T13:58:15+00:00 app[rake.14]: Starting process with command `rake db:migrate --trace` 
2011-06-20T13:58:48+00:00 heroku[web.1]: Stopping process with SIGTERM 
2011-06-20T13:58:48+00:00 app[web.1]: >> Stopping ... 
2011-06-20T13:58:48+00:00 heroku[web.1]: Process exited 

Répondre

1

Le problème est probablement parce que vous n'êtes pas compris l'environnement que je montre ci-dessous; vous pouvez également exécuter ce dans la console heroku

In your apps shell/terminal

heroku console 

Ensuite, exécutez simplement comme un bloc parce heroku ne vous laissera pas courir ne/blocs d'extrémité

Batch.all.each {|b| b.update_attributes(:company => b.register.store.company, :store => b.register.store)} 

ce qui devrait travailler en console sauf si l'un de ces champs est vide et c'est pourquoi vous aurez besoin d'une tâche de rake pour les erreurs.

Essayez ceci:

lib/tasks/add_bathces.rake

task :add_bathces => :environment do 
    Batch.all.each do |batch| 
    if batch.register.store.comapny && batch.register.store 
     batch.update_attributes(:company => b.register.store.company, :store => b.register.store) 
    else 
     puts "Store or company were nill" 
    end 
    end 
end 
+0

est-il un moyen d'appeler alors cette tâche à partir d'une migration? ou est ce type de manipulation de données complètement en dehors du domaine des migrations heroku? –

+0

Dans le répertoire de travail de votre application 'râteau heroku: add_batches' – s84

+0

sh # t, c'était pour le ratisser. – s84

Questions connexes