セブンスドラゴン 完了2009/04/27

発売日からちまちまとプレイしていたセブンスドラゴンを完了。
影塔を踏破したから、完了で良いよね。

こんな感じのパーティで、平均レベルは77。
プリンセスは聖声のbuff系で、ローグはダガー使いです。
タランテラのパラライズで良い感じに行動キャンセルされて、偶然勝った気がします。
本編は、フロワロ踏みに専心していたら、推奨レベルを大きく上回ってしまったようで、拍子抜けするぐらい簡単にクリアできたけど、クリア後ダンジョンは相変らず酷いバランスでした。(褒めてます)
非常に楽しませていただきました。

次は積みゲーになっているシャイニングフォースフェザーの解消かな。

Capistrano で svn+ssh なリポジトリからデプロイ2009/04/27

なんかもっと上手い方法がありそうな気がするので、誰かの添削を期待して晒してみます。

Capistrano のバージョンは 2.5.5 基本的な設定の話は省略します。

復習

Capistrano がリポジトリにアクセスするタイミングについて。

cap deploy

このタスクが完了するまでに、Capistrano は 2回リポジトリにアクセスします。 それぞれの経路が違うので、それぞれに対処が必要です。

  • ローカルのPCからリポジトリへ 指定したリポジトリの先端のリビジョンを取得するためのアクセスを行います。 発行されているコマンドは
svn info svn://example.com/svn/reps/application/trunk -rHEAD
  • デプロイ先のホストからリポジトリへ 実際にデプロイを行うために svn co コマンドを発行します。

問題点

Capistrano の設定ファイルを書く上で問題になるのは、1ヶ所だけだと思います。 svn+ssh に含まれる ssh の接続用ユーザ情報を書く設定項目が無いのです。

set :user, 'username'

で設定できるログインユーザは、ローカルからデプロイ先へのログインにしか使用されません。

Capistorano は svn コマンドを何も考えずに利用するので、結果としてデフォルト値が採用されます。 結果として、

  • ローカルからのアクセスの際は、ローカルの(今まさに cap コマンドを実行した)ユーザ
  • デプロイ先からのアクセスの際は、set :user で設定したユーザ

が使用されます。

これらがどちらも、リポジトリのホストへ ssh でアクセスできれば良いのですが、 うちはそうなっていない(後者はお客様指定のアカウント名だったりする)ので、 困ったことになります。

解決方法

シェル環境変数 SVN_SSH を設定する

多分、これが順当なのかなと思っています。

export SVN_SSH='ssh -l username -i /path/to/private_key'

set :repository にユーザ名を埋める

config/deploy.rbに

set :repository, "svn+ssh://username@example.com/svn/reps/application/trunk"

などとしてしまう。

お客様のサーバにできるだけ痕跡を残したくない場合に。