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

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

在这个Google小组和问题的答案中 ,都说symlinking是解决方案。

您需要确保从Capistrano共享目录中符号链接RAILS_ROOT / public / spree目录,而不是每次部署时都重新创建。 如果未发生此符号链接,则每次部署时图像都将丢失。

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

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

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

如果你使用Capistrano 3,你可以使用我在这里回答我自己的问题时解释的相同方法。

从本质上讲, :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 )。