やっぱり動かない
こんなことやってみたけど、デプロイ先に反映されない。
Subversion リポジトリを作って、 Rails アプリを作成。
$ svnadmin create /home/machu/svn/capping --fs-type=fsfs $ cd ~/work $ svn co svn+ssh://localhost/home/machu/svn/capping $ rails -d sqlite3 capping $ cap --apply-to capping $ svn add capping/* $ svn commit -m 'initial setup' capping
config/deploy.rb を修正。
set :application, "capping" set :repository, "svn+ssh://localhost/home/machu/svn/#{application}" role :web, "localhost" role :app, "localhost" role :db, "localhost", :primary => true set :deploy_to, "/home/machu/deploy/#{application}"
deploy 先をセットアップ。
$ cap setup
次に deploy 。ここで失敗する。
$ cap deploy * executing task deploy * executing task update ** transaction: start * executing task update_code * querying latest revision... (中略) ** [out :: localhost] ln: ** [out :: localhost] `/home/matsuoka/deploy/capping/shared/system' へのシンボリックリンク `/home/matsuoka/deploy/capping/releases/20070220055523/public/system' を作成します ** [out :: localhost] : そのようなファイルやディレクトリはありません command finished *** [set_permissions] transaction: rollback
理由は capistrano が最新のリビジョン番号を認識できていないから。
$ svn info . | grep Revision Revision: 0 $ svn info config | grep Revision Revision: 1
最初にチェックアウトした時点でリビジョン0。 rails コマンドでひな形を作ってリビジョン1。 カレントディレクトリはリビジョン0で、それ以外のディレクトリはリビジョン1という扱いになってる。
だから、こうすると(今回は) deploy できる。
$ cd config $ cap -f deploy.rb deploy
でも、 script/generate でモデルを作ってリビジョンが2になったら、 cap deploy で反映されなくなる。 (configディレクトリのリビジョンが1のままだから)
これは Subversion が古い (1.1.4) から?よく分からない。 しかも、最新の Subversion をソースから入れようとしたら、 apr のバージョンが古いと怒られた。 本当に OS の乗り換えを検討するかな…。