据我所知,卡皮斯特拉诺:db
角色仅用于运行迁移。
(因此,在大多数情况下,它可能不应该实际上是运行数据库的服务器。为什么那里会有 ruby/rails 堆栈(或者允许 ssh 登录)?它只是您想要实际执行 Rails 迁移的任何服务器)。
并且只有标识为 db 角色的服务器:primary => true
用于运行迁移。
因此任何其他服务器被标识为“db”角色但没有:primary => true
……根本没用吗?那么为什么默认创建的deploy.rbcapify .
鼓励你列出它们?您甚至会在这里列出什么?
我缺少什么吗?
很明显,角色名称:db
具有误导性。正如您所指出的,Capistrano 定义了它(用:primary => true
)作为我们执行的主机rake db:migrate
上,但数据库服务器并不总是在此类主机上运行。我们可以通过 Rails 应用程序更改远程数据库服务器的架构。此类主机的正确角色名称不是:db
.
从评论中推断lib/capistrano/configuration/roles.rb https://github.com/capistrano/capistrano/blob/master/lib/capistrano/configuration/roles.rb,角色的本义:db
是运行数据库服务器的主机。我们预计将登录:db
主持并执行一些任务。
Capistrano 的设计者应该已经定义了:migration
的角色或其他东西deploy:migrate
任务。但两者之间的关联:db
这项任务的角色是六年前定义的9a6d2fb https://github.com/halorgium/capistrano/commit/9a6d2fb7b65e963e73b0e14ee72361f0adb9db25从那时起就没有改变过。
一般来说,Capistrano的用户可以自由定义角色并将其与任务关联起来。这deploy:migrate
任务只是作为recipe对于 Rails 开发人员。不幸的是,这个秘籍包含了关于我们如何进行数据库迁移的误解,并且被广泛使用了很长时间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)