【问题标题】:Keep unversioned files when deploying with Capistrano使用 Capistrano 部署时保留未版本控制的文件
【发布时间】:2011-01-10 15:06:05
【问题描述】:

每次我在远程服务器上运行 cap deploy 时,我都会丢失一些未版本控制的文件,因为 capistrano 会创建一个新目录并检查其中的头版本。但是有些文件没有版本控制,例如用户头像(回形针)和上传的图像,它们不会被复制到新的当前版本中。

我该如何解决这个问题?

谢谢!

【问题讨论】:

    标签: ruby-on-rails deployment capistrano


    【解决方案1】:

    就我个人而言,我认为处理这类事情的最佳方法是将它们存储在共享文件夹中,并在 capistrano 中创建一个任务来创建指向共享资产的符号链接。

    这是我的一个项目中的一个示例:

    set :shared_assets, %w{public/images/products public/images/barcodes}
    
    namespace :assets  do
      namespace :symlinks do
        desc "Setup application symlinks for shared assets"
        task :setup, :roles => [:app, :web] do
          shared_assets.each { |link| run "mkdir -p #{shared_path}/#{link}" }
        end
    
        desc "Link assets for current deploy to the shared location"
        task :update, :roles => [:app, :web] do
          shared_assets.each { |link| run "ln -nfs #{shared_path}/#{link} #{release_path}/#{link}" }
        end
      end
    end
    
    before "deploy:setup" do
      assets.symlinks.setup
    end
    
    before "deploy:symlink" do
      assets.symlinks.update
    end
    

    【讨论】:

    • 我明白,但是......“共享”目录是一个 capistrano 的东西,据我所知,Rails 并不知道。那么,我该如何告诉 Rails 将文件保存在该目录中,该目录在应用程序之外并且它在我的本地副本中不存在?
    • 您不会在 Rails 中进行任何更改。这就是这个策略的重点。 Rails 仍然将图像保存到“RAILS_ROOT/public/images/avatars”或其他任何位置,但该文件夹实际上是一个 symlink 到 capistrano 的“共享”文件夹中的文件夹。
    【解决方案2】:

    将路径添加到 shared_children 也可以,实际上只是 deploy.rb 中的一条线:

    set :shared_children, shared_children + %w{public/uploads}
    

    在这里找到它:astonj

    【讨论】:

      【解决方案3】:

      这是一个非常实用的小宝石:https://github.com/teohm/capistrano-shared_file。查看 gem 的文档——一切都很简单。

      安装 gem,在 deploy.rb 中需要它,并在 shared_files 选项中提供您希望在版本之间共享的文件数组:

      set :shared_files, %w(config/database.yml)
      

      将您的文件存储在<project_dir>/shared/files/YOUR_FILE_GOES_HERE。并且它们将在每次部署时符号链接到您的应用程序的根目录。就是这样。

      【讨论】:

        猜你喜欢
        • 2015-12-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多