升级到Rails 3.2.11后,Capistrano部署失败

Pet*_*nko 6 capistrano ruby-on-rails-3.2

我有生产Rails 3.2.3应用程序,我用它来使用capistrano进行部署.当我决定将rails升级到3.2.11时,我做了以下步骤:

  1. 在Gemfile中更改了rails版本
  2. 运行"捆绑更新rails"
  3. 从供应商/缓存,Gemfile和Gemfile.lock推送新的宝石
  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
Run Code Online (Sandbox Code Playgroud)

我尝试使用其他项目执行这些步骤,这些项目之前已成功使用capistrano进行部署并具有相同的结果.

我的Gemfile和deploy.rb

ste*_*eve 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
Run Code Online (Sandbox Code Playgroud)

我认为将资产符号链接到共享目录可以修复它,但我没有乱搞(必须把这个部署搞定),而是将上限降级回 2.13.5。

  • @RomanGaufman 清单文件的名称已更改为 `manifest-a5247d227d9b50f54f7c66dc7e640bca.json` 样式。您只需在“/home/deploy/www/ourapp/shared/assets”目录上通过“touch”命令创建“manifest.yml”即可避免此错误。 (3认同)
  • 我正在使用 capistrano 2.14.2 并在升级到 Rails 4.0beta1 后看到同样的问题。有没有不用降级的解决办法?- 我不确定从哪里符号链接资产? (2认同)