我有rails應用程序連接到多個數據庫。我寫了自定義的rake任務,看起來像這樣:爲什麼循環中的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:只能遷移用戶[0]用戶(第一用戶集合)並沒有錯誤,只是默默地stoppes .. 。
下面是從耙輸出--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
我不知道爲什麼其餘用戶沒有得到遷移。
檢查源[這裏](http://rake.rubyforge.org/classes/Rake/Task.html) – lebreeze 2011-03-14 17:59:04
它的工作:)感謝的:) – 2011-03-23 12:02:37