我正在爲不同客戶端使用PostgreSQL模式的多租戶Rails應用程序。 Rails遷移不能用於開箱即用的多個模式,所以我做了下面的rake任務來遷移所有模式,它似乎工作。我的問題是如果其他人已經實施了更好更優雅的解決方案。我也會很高興看到一個很好的教程,其中包括使用多個模式的PostgreSQL的rails代碼示例。到目前爲止,我只找到關於這一主題http://aac2009.confreaks.com/06-feb-2009-14-30-writing-multi-tenant-applications-in-rails-guy-naor.html好介紹,什麼我的目標tomayko.com/writings/rails-multiple-connections的例子針對postgreSQL模式的Rails遷移
desc 'Migrates all postgres schemas'
task :schemas do
# get all schemas
env = "#{RAILS_ENV}"
config = YAML::load(File.open('config/database.yml'))
ActiveRecord::Base.establish_connection(config[env])
schemas = ActiveRecord::Base.connection.select_values("select * from pg_namespace where nspname != 'information_schema' AND nspname NOT LIKE 'pg%'")
puts "Migrate schemas: #{schemas.inspect}"
# migrate each schema
schemas.each do |schema|
puts "Migrate schema: #{schema}"
config = YAML::load(File.open('config/database.yml'))
config[env]["schema_search_path"] = schema
ActiveRecord::Base.establish_connection(config[env])
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Migrator.migrate('db/migrate', ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
end
end
Liquibase根據模式工作,盡我所知 – Janning 2010-05-29 16:10:22
@Janning Liquibase不是一個可以與Rails使用的ActiveRecord模塊一起工作的解決方案。 – lillq 2011-11-27 19:46:42