当前位置 : 主页 > 编程语言 > ruby >

ruby-on-rails – 如何在Capistrano部署中对我的产品图像进行符号链接?

来源:互联网 收集:自由互联 发布时间:2021-06-23
Here我收到了一个解决我的问题的方法,每当我使用Capistrano部署我的Spree Commerce应用程序时,我的图像被删除(它们仍然存在,但文件夹名称错误),我必须通过管理员再次添加它们. 无论是在
Here我收到了一个解决我的问题的方法,每当我使用Capistrano部署我的Spree Commerce应用程序时,我的图像被删除(它们仍然存在,但文件夹名称错误),我必须通过管理员再次添加它们.

无论是在this Google group还是在answer这个问题,据说符号化都是解决方案.

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.

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

在服务器上,它们位于文件夹/ 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,您可以使用我在自己的问题 here的答案中解释的相同方法.

从本质上讲,:shared_children是你在Capistrano 2中的表现方式,但它被删除了以支持:linked_files和:linked_dirs.

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

set :linked_dirs, %w(public/spree)

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

网友评论