capistrano,:db角色,它的用途是什么?

jro*_*ind 13 capistrano ruby-on-rails

据我所知,capistrano :db角色仅用于运行迁移.

(因此,在大多数情况下,它可能实际上不应该是运行数据库的服务器.为什么你会在那里有ruby/rails堆栈(或允许ssh登录)?它只是你想要实际执行rails迁移的服务器).

并且只有标识为db role with的服务器才:primary => true用于运行迁移.

因此,任何其他标识为"db"角色但没有:primary => true......的服务器根本不使用任何内容?那么为什么创建默认的deploy.rb会capify .鼓励你列出它们呢?你甚至会在这里列出什么?

我缺少什么?

Tsu*_*omu 21

显然,角色的名称:db具有误导性.正如您所指出的,Capistrano将其定义为(:primary => true作为)我们执行的主机rake db:migrate,但数据库服务器并不总是在这些主机上运行.我们可以通过Rails应用程序更改远程数据库服务器的模式.这种主机的正确角色名称不是:db.

从对lib/capistrano/configuration/roles.rb的评论中推断,该角色的原始含义:db是运行数据库服务器的主机.我们需要登录:db主机并执行一些任务.

Capistrano的设计师应该:migrationdeploy:migrate任务定义角色或其他东西.但是这个:db角色与这个任务之间的关联是六年前用9a6d2fb定义的,并且从那时起就没有改变.

一般来说,Capistrano的用户可以定义角色并自由地将它们与任务相关联.该deploy:migrate任务仅作为Rails开发人员的配方提供.不幸的是,这个方法包含了对我们如何进行数据库迁移的误解,并且被广泛使用了很长时间.

  • 您现在可以更改迁移的角色名称(也建议使用):https://github.com/capistrano/rails#recommendations (2认同)