1. ホーム
  2. ruby-on-rails

[解決済み] Capistranoの "ロール "とは一体何ですか?

2023-05-23 16:34:41

質問

Capistrano レシピの "roles" の目的および機能は何ですか。レシピのサンプルを見ていると、よくこのようなものを見かけます。

role :app, 'somedomain.com'
role :web, 'somedomain.com'
role :db,  'somedomain.com', :primary => true

のように見えるわけです。 役割 は基本的に サーバ であり、Capistranoがコマンドを実行する場所です。もしそうなら、なぜquot;host" やquot;server" ではなく、quot;role" と呼ばれるのでしょうか?

上の例では :app:web の役割を担っているのでしょうか?

は何をするのでしょうか? :primary => true オプションは何をするのでしょうか?

どのように解決する?

ロールは、特定のサーバにのみ適用されるcapistranoタスクを書くことを可能にします。 これは、実際には複数サーバーのデプロイメントにのみ適用されます。 デフォルトのロールである "app"、"web"、および "db" は内部でも使用されるので、その存在はオプションではありません (AFAIK: 日本経済新聞)。

提供されたサンプルでは、機能的な違いはありません。

":primary => true"は、カスタムタスクでサーバーを指定する際に、さらに細かく指定できるようにするための属性です。

タスク定義におけるロール指定の例です。

task :migrate, :roles => :db, :only => { :primary => true } do
  # ...
end

capistranoのサイト@をご覧ください。 https://github.com/capistrano/capistrano/wiki/2.x-DSL-Configuration-Roles-Role を参照してください。