6

public/files通过 Web 界面不断地将文件上传到 Rails 应用程序的文件夹。

我不想将这些文件保存在源代码管理中,因为它们占用了将近 2 GB,所以每次我这样做时,cap deploy它都会将这些文件保存在其中,releases/并用存储在存储库中的原始副本替换目录。

我想知道将这些文件保存在服务器current目录中的最佳方法是什么。我的一些想法是:

  • 从源代码管理中删除目录并将其替换为指向不受 Capistrano 管理的外部目录的链接。
  • 创建 Capistrano 任务以在部署前将目录复制到 /tmp,然后在部署完成后将其复制回 /public。

有标准的方法来做到这一点吗?

4

3 回答 3

7

为了将来的记录,这是我过去使用共享目录执行的任务:

task :link_shared_directories do     
  run "ln -s #{shared_path}/files #{release_path}/public/files"   
end    

after "deploy:update_code", :link_shared_directories   
于 2008-11-04T20:33:04.883 回答
6

您可以使文件成为您机器上另一个目录的符号链接,例如与 /current 和 /releases 处于同一级别的 /shared 目录。

查看 capistrano 管理 /log 和 /tmp 目录。

于 2008-11-04T19:22:07.583 回答
2

现在我们可以简单地在 deploy.rb 中使用 :linked_files :

set :linked_files, %w{config/database.yml}

在这种情况下,文件 [target_dir]/shared/config/database.yml 必须存在于服务器上。

于 2013-10-20T03:12:01.413 回答