第6回 deploy:update
今回は、ソースコードをターゲットホストに配備する。
ローカルホストで deploy:update タスクを実行する。(表示の一部省略)
% cap deploy:update * executing `deploy:update' ** transaction: start * executing `deploy:update_code' ... ** transaction: commit
しかし、普通はこんな風にはうまく行かない。まず、Subversion リポジトリからソースコードをチェックアウトするのにユーザー名とパスワードが必要であれば、次のような表示になる。
% cap deploy:update
* executing `deploy:update'
** transaction: start
* executing `deploy:update_code'
* executing "svn checkout -q -r21 https://repository.oiax.jp/svn/ballad/trunk ..."
servers: ["alpha.oiax.jp"]
[alpha.oiax.jp] executing command
** [err] Authentication realm: <https://repository.oiax.jp:80> repository.oiax.jp
** Password for 'app':
Password:
ターゲットホストへのログイン名(app)と同じユーザーで Subversion レポジトリにアクセスできて、かつ、デプロイメント作業をするすべての開発者がそのパスワードを知っているなら、ここでそれを入力すればいい。しかし、開発者間でパスワードを共有するのは避けるべきだ。
そこで、deploy.rb を次のような記述に書き換える:
set :application, "ballad"
set :svn_user, ENV['svn_user'] || ENV['USER']
set :svn_password, Proc.new { Capistrano::CLI.password_prompt('SVN Password: ') }
set :repository,
Proc.new { "--username #{svn_user} " +
"--password #{svn_password} " +
"--no-auth-cache " +
"https://repository.oiax.jp//svn/ballad/trunk/" }
set :deploy_to, "/var/rails/#{application}"
set :user, "app"
set :use_sudo, false
role :app, "alpha.oiax.jp"
role :web, "alpha.oiax.jp"
role :db, "alpha.oiax.jp", :primary => true
こうしておいて、次のように deploy:update タスクを実行する(Subversion のユーザー名を kuroda とする)。
% svn_user=kuroda cap deploy:update
この方法にもちょっと問題がある。途中で SVN Password: プロンプトに対してパスワードを入力するのだが、svn コマンドが画面にエコーされることによって、パスワードが見えてしまうのだ。これでは、他の開発メンバーと一緒に作業している時に困ってしまう。
しかし、必ず -q オプション付きでタスクを実行する習慣を身につければ、この問題は避けられる。
% svn_user=kuroda cap -q deploy:update
さて、何らかの理由でターゲットホストにおいてコマンドの実行が失敗し、途中で止まってしまうことがある。その時は、端末に表示された文字から * executing "..." という形式の最後の行を探し、ダブルクオートで囲まれたコマンドをコピーして、ターゲットホスト上で実行し、原因を探る。
[改訂] 2008/05/17 ユーザー app でリモートホストにログインする方式に合わせて記述を修正。
(2008/03/29)
記事に関するご質問は、 hermes@oiax.jp までメールでお送りください。
ウェブサイト構築の発注先を検討されているお客様は、ご相談フォームをご利用ください。
- はじめに
- 第1回 インストール (2008/03/24)
- 第2回 SSH 公開鍵の設置 (2008/03/25)
- 第3回 Windows で Capistrano (2008/03/26)
- 第4回 capify (2008/03/27)
- 第5回 ターゲットホストの準備 (2008/03/28)
- 第6回 deploy:update (2008/03/29)
- 第7回 Rails アプリケーションの起動・停止・再起動 (2008/05/17)
- 第8回 deploy:rollback と deploy:cleanup (2008/05/18)
- 第9回 メンテナンスページへの切り替え (2008/06/03)

