Here我收到了一个问题的解决方案,每当我使用Capistrano部署我的Spree Commerce应用程序时,我的图像都会被删除(它们仍然存在,但文件夹名称错误)我必须添加它们再次通过管理员。
在问题的this Google group和问题的answer中都表示符号链接是解决方案。
您需要确保您的RAILS_ROOT / public / spree目录 从Capistrano共享目录中符号链接而不是 每次部署时都会重新创建。如果没有这个符号链接,你的 每次部署都会丢失图像。
我尝试了一些东西,但我没有设法将符号链接到我的图像。
在服务器上,它们位于文件夹/ 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
但这不起作用。我不知道我必须输入哪条共享路径。我希望有人可以帮助我或提供解释链接。
答案 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
)也是如此。