如何在Capistrano部署中将我的产品图像符号链接到生产中?

时间:2014-02-17 19:28:42

标签: ruby-on-rails ruby capistrano symlink spree

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

在问题的this Google group和问题的answer中都表示符号链接是解决方案。

  

您需要确保您的RAILS_ROOT / public / spree目录   从Capistrano共享目录中符号链接而不是   每次部署时都会重新创建。如果没有这个符号链接,你的   每次部署都会丢失图像。

我尝试了一些东西,但我没有设法将符号链接到我的图像。

在服务器上,它们位于文件夹/ p​​ublic / 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

但这不起作用。我不知道我必须输入哪条共享路径。我希望有人可以帮助我或提供解释链接。

1 个答案:

答案 0 :(得分:7)

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

从本质上讲,:shared_children就是你在Capistrano 2中的表现方式,但它已被移除,转而使用:linked_files:linked_dirs

只需在您的资源库中创建public/spree/目录,如果需要,将其添加到.gitignore(Git跟踪它们是否无关紧要),然后编辑deploy.rb 1}}使用:linked_dirs

set :linked_dirs, %w(public/spree)

这样,当Capistrano部署它时,它会自动在shared/中创建目录并将其链接到您当前的版本中。请注意,如果您需要该目录中存在文件,则必须使用shared/等工具手动将其复制到rsync。对于database.yml这样的文件(您使用:linked_files)也是如此。