Capistrano / Rails 3.2.14 / Sprockets - 未在生产中完成部署

问题描述 投票:3回答:2

我正在迁移几年前创建的Rails应用程序,并且很长时间没有将它部署到新服务器上。 当时,我使用capistrano没有任何问题,现在,当我运行cap deploy时,我得到以下步骤失败:

  * executing "ls -1 /home/deploy/mywebsite.com/shared/assets/.sprockets-manifest* | wc -l"
    servers: ["45.79.142.32"]
    [45.79.142.32] executing command
    command finished in 727ms
  * executing "ls /home/deploy/mywebsite.com/shared/assets/.sprockets-manifest*"
    servers: ["45.79.142.32"]
    [45.79.142.32] executing command
    command finished in 783ms
*** [deploy:update_code] rolling back
  * executing "rm -rf /home/deploy/mywebsite.com/releases/20150812101128; true"
    servers: ["45.79.142.32"]
    [45.79.142.32] executing command
    command finished in 944ms
failed: "rvm_path=/home/deploy/.rvm /home/deploy/.rvm/bin/rvm-shell 'ruby-2.2.2' -c 'ls /home/deploy/mywebsite.com/shared/assets/.sprockets-manifest*'" on 45.79.142.32

我在几个地方读到有关sprockets更改清单文件名或类型(从.sprockets-manifest到.manifest或其他)的内容,但我不知道如何以不是黑客的方式解决它。 我不确定这是否是由于使用旧的Rails版本或其他东西。 这是我使用的版本:

  • Ruby 2.2.2
  • Rails 3.2.14
  • Capistrano 2.15.6(带Rvm / capistrano)
  • 链轮2.2.1
ruby-on-rails ruby-on-rails-3 capistrano sprockets rvm-capistrano
2个回答
6
投票

解决方案很荒谬。 在网上搜索,我发现sprockets正在寻找.sprockets-manifest.json文件。 哪个不存在(这我不知道为什么)。 所以我只是在shared / assets文件夹中手动创建它:

touch shared/assets/.sprockets-manifest.json

它就像一个魅力。 希望这有助于其他人。


0
投票

您的链轮版本可能与此Gemfile不同

可以尝试添加bundle exec前缀使用Gemfile指定版本

我找到了capistrano 2.15.7源代码

# lib/capistrano/recipes/deploy/assets.rb

_cset(:asset_manifest_prefix) { (`sprockets -v`.chomp < "3.0" ? "manifest" : ".sprockets-manifest") rescue "manifest" }

查看更多关于bundle exec rake是什么意思?

© www.soinside.com 2019 - 2024. All rights reserved.