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

Erw*_*ers 3 ruby symlink capistrano ruby-on-rails spree

在这里,我收到了一个解决我的问题的方法,每次当我使用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
Run Code Online (Sandbox Code Playgroud)

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

Gab*_*lli 7

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

从本质上讲,:shared_children你是如何在Capistrano 2中做到这一点的,但是它被取消了并支持:linked_files:linked_dirs.

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

set :linked_dirs, %w(public/spree)
Run Code Online (Sandbox Code Playgroud)

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