Heroku база данных грабли с петлей - PullRequest
0 голосов
/ 20 июня 2011

Я пытаюсь запустить эту миграцию на героку, но она висит в цикле.

puts "0"
add_column :batches, :store_id, :integer
add_column :batches, :company_id, :integer
puts "1"
for batch in Batch.all()
    puts "2"
    batch.company_id = batch.register.store.company.id.to_i
    puts "3"
    batch.store_id = batch.register.store.id.to_i
    puts "4"
    batch.save
    puts "5"
end
puts "6"

К сожалению, я не могу точно сказать, где он висит, потому что ни один из моих "путов" не отображается в консоли. Последняя строка, которую я получаю:

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

Я не могу выполнить какие-либо миграции с помощью цикла, работающего на 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

1 Ответ

1 голос
/ 20 июня 2011

Возможно, проблема в том, что вы не включили среду, которую я покажу ниже; вы также можете запустить это в консоли heroku

In your apps shell/terminal

heroku console

Тогда просто запустите его как блок, потому что heroku не позволит вам запустить блоки do / end

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

Так что это должно работать в консоли, если одно из этих полей не равно nill, и именно поэтому вам понадобится задача rake для ошибок.

Попробуйте вместо этого:

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