やっぱり動かない
2007-02-19
こんなことやってみたけど、デプロイ先に反映されない。
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 の乗り換えを検討するかな…。