capistranoのroleを動的に生成する

あんまり難しい話じゃなくて。

配列で受け取った値をどうやってroleにセットするのか解らなくてハマってた。

普通に書くとこうなるわけなんだが。

role :web, "hoge.jp", "foo.jp"

何かしらのwrapperを書いていて動的にroleを設定したい事が有ると思う。 こんな感じでOKかと思ってたらエラーになる。

# 配列
target_server = target_server.join(",")
role :web, target_server

はまりにハマって。正解はこうだった。 ブロックで書くみたい。

role :web do
  target_servers.each {|target|}
end

元ブログの情報によると2.2.0以上らしい。

ふー。。。ハマった。