ADZ 學習筆記

Ruby/Rails, Startup, Life

rails 筆記 - capistrano 2.x role: :db 真正的意思

| Comments

capistrano 在設定 server 的地方有一個 role 叫做 :db

deploy.rb
server '0.0.0.0', :web, :db, :app, primary: true

以前 deploy 一台機器的時候還沒有發覺哪裡奇怪,不過最近想到一個問題,database server 上應該很單純只是負責跑 mysql,應該沒有什麼 task 是要跑在 database 的。

Google 了一下找到 stackoverflow 找到 這篇討論capistrano source code

原來這裡的 role: :db 指的不是 database 這檯機器,而是需要搭配 primary: true 來指定哪檯機器負責跑 db:migrate,不過這設計也滿奇怪的,因為 capistrano 裡面除了跑 db migration 外,並沒有其他使用到 role: :db 這個角色,而且命名也滿誤導人的。

總之,結論是在多台機器的情況,負責跑 migration 的機器,就是要同時設定 role db 和 primary: true 就對了。

Comments

comments powered by Disqus