Ruby on rails 3.2 升级到Rails 3.2.11后Capistrano部署失败

Ruby on rails 3.2 升级到Rails 3.2.11后Capistrano部署失败,ruby-on-rails-3.2,capistrano,Ruby On Rails 3.2,Capistrano,我有生产Rails 3.2.3应用程序,我使用它来使用capistrano进行部署。当我决定将rails升级到3.2.11时,我执行了以下步骤: 更改了文件中的rails版本 运行“bundle update rails” 从供应商/cache、Gemfile和Gemfile.lock推送新gem 运行“cap生产部署” Capistrano现在失败,出现错误: * 2013-01-11 15:58:25 executing `deploy:assets:precompile' tr

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

  • 更改了文件中的rails版本
  • 运行“bundle update rails”
  • 从供应商/cache、Gemfile和Gemfile.lock推送新gem
  • 运行“cap生产部署”
  • 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部署过,但结果相同


    My

    在升级之前,您是否删除了远程服务器上的所有资产

    有时,一些旧的参考资料可能会导致这种问题

    干杯, 我也有同样的问题

    新版本的capistrano现在必须处理共享资产路径符号链接。 我的
    config/deploy.rb
    有一些代码来处理这个问题,路径相互冲突。 为了解决这个问题,我刚刚从中删除了这一行:

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

    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
    

    我认为将资产符号化到共享目录可以解决这个问题,但我没有胡闹(必须让这个部署出来),而是将cap降级回2.13.5。

    我不知道如何删除我的资产。。。projectpath/shared/assets文件夹为空,所有资产位于…projectpath/releases/yyyymmddhhmmss/public/assets中。此外,我不明白如何删除我的Gemfile.lock,我是否应该从repo中删除它,因为部署代码取自repo?好吧,在repo中保留Gemfile.lock不是一个好做法,因为它是在执行bundle(安装、更新..)时自动生成的。您是否尝试直接执行最后一个命令(执行“cd--/home/deploy/projects/otv/releases/2[…])例如,在当前版本中?!cd--/home/deploy/projects/otv/releases/201301110808236/&&export LANG=en_US.UTF-8&&/usr/local/bin/bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets资产:预编译和&cp--/home/deploy/projects/otv/shared/assets/manifest.yml/home/deploy/projects/otv/projects/otv/otv/releases/releases/releases/2013011080236eads出现错误“cp:cannot stat'/home/deploy/projects/otv/shared/assets/manifest.yml”:没有这样的文件或目录“。这是正常的,因为在所有版本中,位于public/assets/而不是shared/assets中的清单文件中,我使用的是capistrano 2.14.2,并且在升级到Rails 4.0beta1后看到同样的问题。有没有不降级的解决方案我不确定从何处对资产进行符号链接?@RomanGaufman清单文件的名称已更改为
    manifest-a5247d227d9b50f54f7c66dc7e640bca.json
    style。您只需通过
    /home/deploy/www/ourapp/shared/assets
    目录上的
    touch
    命令创建
    manifest.yml
    即可避免此错误。