Я работаю над приложением многопользовательских рельсов, используя схемы PostgreSQL для разных клиентов. Миграция Rails не работает с несколькими схемами из коробки, поэтому я выполнил следующую команду rake, чтобы перенести все схемы и, похоже, работает. Мой вопрос в том, что другие реализовали лучшие и более элегантные решения. Я также был бы очень доволен хорошим учебным пособием, включая примеры кода rails для PostgreSQL с использованием нескольких схем. До сих пор я только нашел хорошую презентацию на тему http://aac2009.confreaks.com/06-feb-2009-14-30-writing-multi-tenant-applications-in-rails-guy-naor.html и пример того, что я стремлюсь к tomayko.com/writings/rails-multiple-connectionsПереходы Rails для схем postgreSQL
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
@Janning Liquibase - это не решение, которое работает с моделями ActiveRecord, которые используют рельсы. – lillq