当您同时部署到多台机器时,您如何确保您的迁移只运行一次?
我现在要做的是选择一台机器来运行迁移,当我确实有这种变化时。理想情况下,部署是无脑的,并且该过程会为我解决这个问题。
我目前的想法是让迁移器寻找要迁移的模式,并在有事要做时获取锁。如果已经获得了锁,它会完全跳过迁移。阅读 ActiveRecord 代码,它似乎不支持这样的想法,因此需要一些补丁。
你的想法是什么?
最佳答案
你在使用 Capistrano ?您可以指定数据库服务器列表并将其中一个标记为主要服务器。迁移只会在该服务器上运行:
role :app, 'example.com.com'
role :web, 'example.com'
role :db, 'db01.example.com', :primary => true
role :db, 'db02.example.com'
role :db, 'db03.example.com'
编辑::db 角色不适用于未运行 Rails 应用程序代码的单独数据库服务器。这可能不是您的设置。
关于ruby-on-rails - 并发部署时的 Rails3 ActiveRecord 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6627714/