2013-01-11 87 views
6

我有生產Rails 3.2.3應用程序,我使用capistrano進行部署。當我決定軌升級到3.2.11我沒有以下步驟:升級到Rails 3.2.11後Capistrano部署失敗

  1. 在Gemfile中改變軌道版本
  2. 運行「捆綁更新軌」
  3. 從供應商/緩存,Gemfile中和的Gemfile推動了新的寶石。鎖定
  4. 運行 「帽生產部署」

Capistrano的現在失敗,錯誤:

* 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,我正在更新Capistrano的到> 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保存在回購站中並不是一個好的做法,因爲它是在執行捆綁軟件(安裝,更新..)時自動生成的。您是否試圖直接執行最後一個命令(在當前版本上執行「cd -/home/deploy/projects/otv/releases/2 [....])?! – Jeremy

1

我有同樣的問題。

新版本的capistrano現在有some code來處理共享資產路徑符號鏈接。 我的config/deploy.rb有一些代碼來處理這個問題,路徑彼此衝突。 我只是刪除這條線從它要解決的問題:

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