我有rails应用程序连接到多个数据库.我写了如下定制的耙子任务:
- 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]用户(集合中的第一个用户),并且没有错误,只是静静地停止…
这是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
我不知道为什么其他用户不能迁移.