2013-01-11 11 views
6

capistranoを使用して配備するために使用する実動Rails 3.2.3アプリケーションがあります。Rails 3.2.11へのアップグレード後にCapistranoのデプロイメントが失敗する

  1. はGemfileに
  2. 実行「バンドル更新レールを」レールのバージョンを変更し
  3. は、ベンダー/キャッシュ、GemfileとGemfileから新しい宝石をプッシュ:私は3.2.11にレールをアップグレードすることを決めたとき、私は手順を以下でした。

    * 2013-01-11 15:58:25 executing `deploy:assets:precompile' 
        triggering before callbacks for `deploy:assets:precompile' 
        * 2013-01-11 15:58:25 executing `deploy:assets:update_asset_mtimes' 
        * executing "[ -e /home/deploy/projects/otv/shared/assets/manifest.yml ] && cat /home/deploy/projects/otv/shared/assets/manifest.yml || echo" 
        servers: ["xxx.xxx.99.51"] 
        [xxx.xxx.99.51] executing command 
        command finished in 28ms 
        * executing "cd -- /home/deploy/projects/otv/releases/20130111095812 && export LANG=en_US.UTF-8 && /usr/local/bin/bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile && cp -- /home/deploy/projects/otv/shared/assets/manifest.yml /home/deploy/projects/otv/releases/20130111095812/assets_manifest.yml" 
        servers: ["xxx.xxx.99.51"] 
        [xxx.xxx.99.51] executing command 
    ** [out :: xxx.xxx.99.51] cp: cannot stat ‘/home/deploy/projects/otv/shared/assets/manifest.yml’: No such file or directory 
        command finished in 18773ms 
    
    :カピストラーノは今エラーで失敗し

  • 実行 "キャップの生産展開を" ロック

    私は同じ結果でcapistranoで展開することに成功していた他のプロジェクトでこれらのステップを実行しようとしました。

    マイGemfile and deploy.rb

  • 答えて

    4

    FWIW、私は> 2.14.0にカピストラーノを更新した後、これを取得した

    *** [err :: ourapp.net] cp: cannot stat `/home/deploy/www/ourapp/shared/assets/manifest.yml' 
    *** [err :: ourapp.net] : No such file or directory 
    

    私は共有に資産をシンボリックリンクだと思いますdirはそれを修正するだろうが、(この展開を手に入れて)混乱するのではなく、キャップを2.13.5に格下げしたばかりだ。

    +0

    ありがとう、スティーブ! –

    +2

    私はcapistrano 2.14.2を使用しており、Rails 4.0beta1にアップグレードした後も同じ問題が発生しています。ダウングレードしていないソリューションはありますか? - どこから資産をシンボリックリンクするのかわからないのですか? –

    +3

    @RomanGaufmanマニフェストファイルの名前が 'manifest-a5247d227d9b50f54f7c66dc7e640bca.json'スタイルに変更されました。このエラーは '/ home/deploy/www/ourapp/shared/assets'ディレクトリの' touch'コマンドで 'manifest.yml'を作成するだけで回避できます。 – Tsutomu

    0

    アップグレードする前に、あなたの遠くのサーバー上のすべてのあなたの資産を削除したのですか?

    は時々いくつかの古い参照が、私は同じ問題を持っていた問題

    乾杯のようなもの、 ジェレミー

    +1

    そして、Gemfile.lockを削除することを考えてください。 – Jeremy

    +0

    私の資産を削除する方法を理解できません。 ... projectpath/shared/assetsフォルダが空です。 すべてのアセットは... projectpath/releases/yyyymmddhhmmss/public/assetsにあります。 また、Gemfile.lockを削除するにはどうすればいいですか?リポジトリからリポジトリから削除する必要があるのは、配布用のコードがリポジトリから取得されたためですか? –

    +0

    さて、Gemfile.lockをあなたのレポに保存するのは良い方法ではありません。それは、bundle(install、update ..)を実行すると自動的に生成されるからです。例えば、現在のリリースで最後のコマンドを直接実行しようとしましたか(cd -/home/deploy/projects/otv/releases/2 [....])? – Jeremy

    1

    を引き起こす可能性があります。

    カピストラノの新しいバージョンでは、共有資産パスのシンボリックリンクを処理するために、some codeが追加されました。 私のconfig/deploy.rbにはこれを処理するコードがあり、パスは互いに衝突していました。 私は問題を解決するために、それから、この行を削除:

    run "ln -nfs #{shared_path}/public/assets #{release_path}/public/assets"