代码之家  ›  专栏  ›  技术社区  ›  Federico Builes

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

  •  6
  • Federico Builes  · 技术社区  · 17 年前

    我正在将文件上传到我的 public/files 通过web界面持续访问Rails应用程序的文件夹。

    我不想把这些放在源代码管理中,因为它们的大小接近2GB,所以每次我做 cap deploy 它将把这些文件保存在 releases/ 并用存储在存储库中的原始副本替换该目录。

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

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

    有标准的方法吗?

    3 回复  |  直到 16 年前
        1
  •  7
  •   Federico Builes    17 年前

    为了以后的记录,这是我用共享目录完成的任务:

    task :link_shared_directories do     
      run "ln -s #{shared_path}/files #{release_path}/public/files"   
    end    
    
    after "deploy:update_code", :link_shared_directories   
    
        2
  •  6
  •   jonnii    17 年前

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

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

        3
  •  2
  •   Chad Johnson    12 年前

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

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

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