【问题标题】:Keeping static files in server when deploying with Capistrano使用 Capistrano 部署时将静态文件保存在服务器中
【发布时间】:2008-11-04 19:13:46
【问题描述】:

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

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

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

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

有标准的方法吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-07-10
          • 2018-11-20
          • 2011-03-05
          • 1970-01-01
          • 2011-08-26
          • 2014-10-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多