2

cap deployRails アプリケーションをデプロイするために実行すると、次の出力が表示されます。

 * executing "ls -x /var/www/releases"
    servers: ["example.com"]
    [example.com] executing command
    command finished in 84ms
  * 2013-06-30 01:17:49 executing `deploy'
  * 2013-06-30 01:17:49 executing `deploy:update'
 ** transaction: start
  * 2013-06-30 01:17:49 executing `deploy:update_code'
    executing locally: "git ls-remote git@some-random-git-server.org:example.com.git HEAD"
    command finished in 1187ms
  * executing "git clone -q --depth 1 git@some-random-git-server.org:example.com.git /var/www/releases/20130629231751 && cd /var/www/releases/20130629231751 && git checkout -q -b deploy 8d4f9874c7c3c29529baa4a6cf7e9d8d409780bc && (echo 8d4f9874c7c3c29529baa4a6cf7e9d8d409780bc > /var/www/releases/20130629231751/REVISION)"
    servers: ["example.com"]
    [example.com] executing command
    command finished in 10098ms
  * 2013-06-30 01:18:01 executing `deploy:finalize_update'
    triggering before callbacks for `deploy:finalize_update'
  * 2013-06-30 01:18:01 executing `deploy:assets:symlink'
  * executing "rm -rf /var/www/releases/20130629230631/public/assets && mkdir -p /var/www/releases/20130629230631/public && mkdir -p /var/www/shared/assets && ln -s /var/www/shared/assets /var/www/releases/20130629230631/public/assets"
    servers: ["example.com"]
    [example.com] executing command
    command finished in 71ms
  * 2013-06-30 01:18:01 executing `bundle:install'
  * executing "cd /var/www/releases/20130629230631 && bundle install --gemfile /var/www/releases/20130629230631/Gemfile --path /var/www/shared/bundle --deployment --quiet --without development test"
    servers: ["example.com"]
    [example.com] executing command
    command finished in 631ms
  * executing "chmod -R -- g+w /var/www/releases/20130629230631 && rm -rf -- /var/www/releases/20130629230631/public/system && mkdir -p -- /var/www/releases/20130629230631/public/ && ln -s -- /var/www/shared/system /var/www/releases/20130629230631/public/system && rm -rf -- /var/www/releases/20130629230631/log && ln -s -- /var/www/shared/log /var/www/releases/20130629230631/log && rm -rf -- /var/www/releases/20130629230631/tmp/pids && mkdir -p -- /var/www/releases/20130629230631/tmp/ && ln -s -- /var/www/shared/pids /var/www/releases/20130629230631/tmp/pids"
... more stuff...

これに関する問題は、capistrano が間違ったディレクトリを使用して、新しいコードがフェッチされた後にコマンドを実行することです ( deploy:update_code)。git clone コマンドは取得したファイルを/var/www/releases/20130629231751ディレクトリに保存しますが、次のすべてのコマンドは古いリリース ( /var/www/releases/20130629230631) を使用します。その結果、アセットなどが間違ったリリース用にプリコンパイルされてしまいます。

config/deploy.rbはこのように見えます:

set :application, "example"
set :repository,  "git@some-random-git-server.org:example.com.git"
set :deploy_to, "/var/www"

set :scm, :git
set :git_shallow_clone, 1

role :web, "example.org"
role :app, "example.org"
role :db,  "example.org", :primary => true

set :user, "some-user"
set :use_sudo, false

ruby_version = 'ruby-1.9.3-p392'
set :default_environment, {
  'PATH'         => "/usr/local/rvm/gems/#{ruby_version}/bin/:$PATH",
  'RUBY_VERSION' => "#{ruby_version}",
  'GEM_HOME'     => "/usr/local/rvm/gems/#{ruby_version}",
  'GEM_PATH'     => "/usr/local/rvm/gems/#{ruby_version}@global",
  'BUNDLE_PATH'  => "/usr/local/rvm/gems/#{ruby_version}",
  'TERM' => 'xterm'
}

git clone の後のコマンドが正しいディレクトリで動作するように、この問題を修正するにはどうすればよいですか?

4

0 に答える 0