使用Capistrano部署时,在服务器中保留静态文件

时间:2008-11-04 19:13:46

标签: ruby-on-rails capistrano release-management

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

我不想将它们保留在源代码管理中,因为它们的格式大约为2 GB,因此每次执行cap deploy时,它都会将这些文件保存在releases/中,并将目录替换为保存在存储库中的原始副本。

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

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

有标准的方法吗?

3 个答案:

答案 0 :(得分:7)

对于将来的记录,这是我用共享目录执行的任务:

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

after "deploy:update_code", :link_shared_directories   

答案 1 :(得分:6)

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

签出capistrano管理/ log和/ tmp目录。

答案 2 :(得分:2)

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

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

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