ruby-on-rails - 如何在 Capistrano 部署的生产环境中对我的产品图像进行符号链接(symbolic link)?

标签 ruby-on-rails ruby capistrano symlink spree

Here我收到了我的问题的解决方案,每次当我使用 Capistrano 部署我的 Spree Commerce 应用程序时,我的图像都会被删除(它们仍然存在,但文件夹名称错误)并且我必须通过管理员再次添加它们。

都在 this Google groupanswer对于这个问题,据说符号链接(symbolic link)是解决方案。

You need to make sure that your RAILS_ROOT/public/spree directory is being symlinked in from the Capistrano shared directory and not recreated every time you deploy. If this symlink isn't happening, your images will be lost on every deploy.

我已经尝试了一些方法,但我没有设法对我的图像进行符号链接(symbolic link)。

在服务器上,它们位于文件夹/public/spree/products 中。我试过的是这样的:

namespace :deploy do
  task :start do ; end
  task :stop do ; end
  task :symlink_shared do
     run "ln -nfs #{shared_path}/shared/spree/ #{release_path}/public/spree/""
  end
end

但这行不通。我不知道我必须输入哪条共享路径。我希望有人能帮助我或提供解释链接。

最佳答案

如果您使用的是 Capistrano 3,您可以使用我在对我自己的问题的回答中解释的相同方法 here .

本质上,:shared_children 是你在 Capistrano 2 中的做法,但它被移除以支持 :linked_files:linked_dirs.

只需在您的存储库中创建您的 public/spree/ 目录,如果需要,将其添加到 .gitignore (无论它们是否被跟踪或不是 Git),然后编辑您的 deploy.rb 以使用 :linked_dirs:

set :linked_dirs, %w(public/spree)

这样,当 Capistrano 部署时,它会自动在 shared/ 中创建目录并将其链接到您当前的版本中。请记住,如果您需要文件出现在该目录中,您必须使用 rsync 等工具手动将它们复制到 shared/。这同样适用于像 database.yml 这样的文件(您将使用 :linked_files)。

关于ruby-on-rails - 如何在 Capistrano 部署的生产环境中对我的产品图像进行符号链接(symbolic link)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21837690/

相关文章:

ruby - Rails 渲染 Controller 中的部分和布局

ruby-on-rails - 使用 Capistrano 在 Heroku 上部署?

perl - Capistrano 是否有 Perl 或 Lua 替代品?

ruby-on-rails - 如何从命令行停止 Rails 服务器?

ruby-on-rails - Phusion 乘客无法以 root 身份运行 - 警告 : potential privilege escalation vulnerability

c++ - ruby 程序 : Trailing zeros in the nth Power of a numbers factorial

ruby-on-rails - 使用Capistrano和Rails 4配置延迟的作业

javascript - 等待 Angular JS 工厂请求获得响应

ruby-on-rails - Rails 使用变量名作为 json 数组的键

ruby-on-rails - 我怎样才能在一个 block 中产生多个部分?