使用 capistrano 部署并在 rails 上使用 ruby 上传目录

the deploying with capistrano and uploads directory with ruby on rails

我使用 Capistrano 来部署我的网站。 遇到的问题是,每次我在生产中使用 capistrano 部署我的网站时,它让我无法将图像上传到生产中,这让我崩溃了。

当我在制作中进行部署时,如何让我的图片上传到制作中?

您要确保在 deploy.rb 中设置 :linked_dirs 例如对于我的一个站点回形针上传到 public/system 目录,所以我需要确保我对那个站点进行符号链接:

set :linked_dirs, ['log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system']

编辑:对我来说,这会在 [cap deploy dir]/current/public/system 中创建一个指向 [cap deploy dir]/shared/public/system

的符号链接

如果您在再次部署之前不知道,请检查您的 [cap deploy dir]/releases 您应该找到一些旧部署,以便您可以恢复上传。


来自 gem github 页面 (https://github.com/capistrano/rails):

符号链接

您可能希望符号链接 Rails 共享文件和目录,如 log、tmp 和 public/uploads。确保通过设置 linked_dirs 和 linked_files 选项启用它:

# deploy.rb
set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/uploads')
set :linked_files, fetch(:linked_files, []).push('config/database.yml', 'config/secrets.yml')

当您使用 capistrano 进行部署时,每次都会创建新版本的代码。 每个版本实际上是一个单独的文件夹,这就是您必须为每次部署一次又一次地上传图像的原因。

您可以对您的目录进行符号链接,以便为每个版本的代码提供来自公共位置的图像。

set :linked_dirs, fetch(:linked_dirs, []).push('bin', 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle')