背景
Capistrano は基本的に SSH で対象へ接続し作業するツールであると思う。
が、current -> releases/xxxx
の仕組みとかタスクフローとか DSL とか、組み込みの機能をローカルでの作業に役立てたい1こともたまーにある。
単純に SSH 対象を localhost
として、例えば
server 'localhost', roles: %w{app}, user: 'me', key: 'mykey'
みたいに書けばリモート同様に使えるのでそれでも良いのだが、微妙に SSH 設定が煩わしい。キーペア配置の必要があるし。
対策
server 'localhost'
の時に SSH しないパッチを当てる gem を作った
gem 'capistrano-locally'
を入れて、
Capfile
で require 'capistrano/locally'
すれば、
こんな感じ ↓ で SSH 設定をしなくてすむ
server 'localhost', roles: %w{app}
それ必要?
正直なところ有用なケースは相当限られるので誰得ライブラリではあるが、
「繰り返し何かの作業をしたい」
「keep_releases
の指定で古いのを勝手に掃除したい」
「Jenkins にするほどじゃない / Jenkins にできないわけがある」
「ssh 鍵は置けない」
ようなこまごまとした事情がある場合の、気軽に使える作業フレームワークとして。
-
run_locally
すればいいじゃん、ってことではなくdeploy
のような既存タスクを使いたいこともある、ということ ↩