Почему задача Rake в цикле выполняется только один раз?

У меня есть приложение rails, которое подключается к нескольким базам данных. Я написал специальную задачу rake, которая выглядит так:

task :migrate_accounts_schema => [:environment] do |t|
  users = User.find :all, :conditions => ["state = 2"], :order => "id asc"
  users.each do |user|            
    if user.state == 2
      ActiveRecord::Base.establish_connection(
        :adapter  => "postgresql",
        :host     => user.database_host,
        :port     => user.database_port,
        :username => user.subdomain,
        :password => "#{user.database_password}",
        :database => user.database_name
      )
      Rake::Task["db:migrate"].invoke
    end
  end
end

Проблема в том, что задача выполняет db: migrate только для пользователей [0] user (первый пользователь в коллекции), и ошибок нет, просто останавливается без уведомления ...

Вот результат rake --trace

** Invoke app:migrate_accounts_schema (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute app:migrate_accounts_schema    
** Invoke db:migrate (first_time)
** Invoke environment 
** Execute db:migrate
** Invoke db:schema:dump (first_time)
** Invoke environment 
** Execute db:schema:dump
** Invoke db:migrate 

. Я понятия не имею, почему остальные пользователи не переносятся.

16
задан Anthony Mastrean 10 October 2012 в 14:59
поделиться