我有一个 Rails 应用程序和一个 Sinatra 应用程序,共享同一个数据库。 Sinatra 应用程序使用 ActiveRecord。
我能否从每个应用程序中运行迁移,就好像它们在同一个应用程序中一样?这会导致任何问题吗?
Rails 应用程序中的 schema.rb 文件通过以下方式跟踪当前迁移
ActiveRecord::Schema.define(:version => 20121108154656) do
但是,Sinatra 应用如何知道数据库的当前版本?
Rails 3.2.2,Ruby 1.9.3。
最佳答案
schema_migrations 表中的版本列等于 ruby 迁移文件示例前面的时间戳:20130322151805_create_customers.rb 因此,如果两个或更多应用程序正在为 schema_migrations 表做出贡献,那么如果 rails 可以回滚,则将不可能'找不到 down() 方法(因为它不会找到另一个应用程序中包含的迁移文件,即 db/migrate/...)
我目前的情况就是这样,我选择了一个主 ActiveRecord 应用程序来管理随着我们数据库的发展而进行的迁移和数据转换。请记住,交易的一部分也是让模型保持最新。这一直很耗时,因此我们正在考虑将数据库分解为业务领域,并提供 API (JSON) 来查询另一个应用程序的支持数据。这样每个应用程序都管理它的域并负责通过 API 公开数据。
问候。
关于ruby-on-rails - 当多个应用程序在 Ruby 中共享同一个数据库时如何管理迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13588642/