「Railsレシピブック」出張版でCapistranoの話を聞いてきたのでついでに最近嬉しかったCapistranoネタ。
名前は違えどどこの開発でも大体見かけるステージング環境(本番と同じ環境だけど本番とは別)。
cap1.xの時はdeploy_staging.rbとかを作ってたしか、cap -f deploy_staging.rb deployってやってたんだけど、cap2.xで-fするとそのファイルの中身のtaskしか読まなくてcap自体のタスクを読まねえ。
ちょっと調べるとcapistrano-extってgemがあるそうです。
capistrano-extでステージング環境にデプロイ:
# config/deploy.rb:
require "capistrano/ext/multistage"
とやるとstaging, production, testingという環境が定義される。
config/deploy.rb
config/deploy/production.rb
config/deploy/staging.rb
こういうファイルでそれぞれの環境毎の設定が書ける。共通部分をconfig/deploy.rbに書いて、production.rb, staging.rbは差分だけ書けばいい。
cap staging deploy:update
よかったのかい、ホイホイステージング環境デプロイしちまって。ッアー!
でも、そもそもステージング環境ってモノ自体に少し疑問が。本当に必要なのかな?railsの環境分ける機能は一気に広まったけどそもそもそれに起因する面倒もあると思う。次世代のフレームワークには環境分けなくても大丈夫なナニカがあるといいな。(production, development, testing分けは技術面からの要請だと思うので、技術で解決するんじゃないかという憶測)