当您同时部署到多台计算机时,如何确保迁移仅运行一次?
我现在要做的就是选择一台机器来运行迁移,当我对这种类型进行更改时。理想情况下,部署是无脑的,这个过程会照顾我。
我的想法当前是让迁移器查找要迁移的模式并获取锁定(如果有事可做)。如果已经获取了锁,它将完全跳过迁移。阅读ActiveRecord代码似乎不支持这样的想法所以需要一些补丁。
你的想法是什么?
答案 0 :(得分:2)
您使用的是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应用程序代码的单独数据库服务器。这可能不是你的设置。