Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何防止capistrano覆盖用户在自己文件夹中上传的文件?_Ruby On Rails_Git_Capistrano - Fatal编程技术网

Ruby on rails 如何防止capistrano覆盖用户在自己文件夹中上传的文件?

Ruby on rails 如何防止capistrano覆盖用户在自己文件夹中上传的文件?,ruby-on-rails,git,capistrano,Ruby On Rails,Git,Capistrano,我正在使用Capistrano和git部署RoR应用程序。我有一个文件夹,每个用户都有自己的文件夹。当用户上载或保存文件时,它会保存在自己的文件夹中 当我将新版本的代码部署到服务器时,用户文件和文件夹将被我的开发人员机器上的内容覆盖 有没有办法像我们在git中那样忽略capistrano中的一些文件夹?本文建议使用符号链接并将用户文件存储在共享文件夹中。但这是一个老帖子,所以我想知道现在是否有更好的方法 还有,有人知道有什么好的屏幕广播/教程可以推荐使用RoR+git+capistrano吗 谢

我正在使用Capistrano和git部署RoR应用程序。我有一个文件夹,每个用户都有自己的文件夹。当用户上载或保存文件时,它会保存在自己的文件夹中

当我将新版本的代码部署到服务器时,用户文件和文件夹将被我的开发人员机器上的内容覆盖

有没有办法像我们在git中那样忽略capistrano中的一些文件夹?本文建议使用符号链接并将用户文件存储在共享文件夹中。但这是一个老帖子,所以我想知道现在是否有更好的方法

还有,有人知道有什么好的屏幕广播/教程可以推荐使用RoR+git+capistrano吗


谢谢。

您应该将用户文件夹移到Capistrano的
发行版
目录之外。通常的方法是让Capistrano创建指向应跨部署保留的目录的符号链接

下面是我的Rails博客应用程序的
config/deploy.rb
中的一个示例,其中博客帖子中的下载文件和帖子中使用的图像存储在
共享
目录中:

after :deploy, 'deploy:link_dependencies'

namespace :deploy do
  desc <<-DESC
    Creates symbolic links to configuration files and other dependencies
    after deployment.
  DESC
  task :link_dependencies, :roles => :app do
    run "ln -nfs #{shared_path}/public/files #{release_path}/public/files"
    run "ln -nfs #{shared_path}/public/images/posts #{release_path}/public/images/posts"
  end
end
deploy之后,“deploy:link\u依赖项”
名称空间:deploydo

这太晚了,但我遇到了这个问题。我使用rails 5和capistrano 3.6。我通过创建共享文件夹的符号链接解决了这个问题

您的deploy.rb中可能已经有这一行了

set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle}
如果要将用户的图像保存在public/images/user_images中并将其符号链接到共享文件夹,请添加文件夹名称和空格(如下所示):


现在运行
cap production deploy
,您应该能够访问共享文件夹中的图像。

谢谢John,现在就是这样了。
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/images/user_images}