【问题标题】:clean shared/assets folder on production server rails 3清理生产服务器 rails 3 上的 shared/assets 文件夹
【发布时间】:2013-01-04 18:07:12
【问题描述】:

我的资产在/home/name/apps/myapp/shared/assets"的生产服务器上

我看到这个目录正在快速增长。现在权重文件夹是 40 Mb,但我当前资产的权重是 3.2 mb

我的问题是如何使用 capistrano 自定义任务清理这个旧资产文件夹。当我做最后一个时,我只需要最后一个资产cap deploy

已编辑:

用于预编译的 Capistrano 任务:

namespace :assets do
    task :precompile, :roles => :web, :except => { :no_release => true } do
      from = source.next_revision(current_revision)
      if capture("cd #{latest_release} && #{source.local.log(from)} vendor/assets/ app/assets/ | wc -l").to_i > 0
        run_locally("rm -rf public/assets/*") 
        run_locally "bundle exec rake assets:precompile"
        find_servers_for_task(current_task).each do |server|
         run_locally "rsync -vr --exclude='.DS_Store' --recursive --times --rsh=ssh --compress --human-readable --progress public/assets #{user}@#{server.host}:#{shared_path}/"
        end
      else
        puts.info "Skipping asset pre-compilation because there were no asset changes"
      end
    end
  end

我在生产服务器上预编译了资产,但我已更改为使用 rsync 将资产预编译到本地机器。

【问题讨论】:

  • 您目前如何部署这些资产?您是否预编译它们并将它们添加到存储库中?你预编译它们并rsync它们吗?当您说您的“当前资产”仅重 3.2 MB 时,您指的是您的开发 public/assets 文件夹还是您的 app/assets 文件夹?
  • 是的。我已经更新了我的问题。我是现场服务器生产的预编译资产,但现在我已更改为在本地计算机上预编译并在使用 rsync 上传后。我指的是我的公共/资产,重量为 3.2 mb。非常感谢!
  • 您是否尝试将--delete 添加到您的rsync 任务中?从 rsync 手册页:--delete delete extraneous files from dest dirs.
  • 谢谢,您能在一个回复中将您的代码添加到上述示例中吗?
  • 完成了。很高兴你成功了。

标签: ruby-on-rails ruby ruby-on-rails-3 deployment capistrano


【解决方案1】:

尝试在您的 rsync 命令中使用--delete

来自 rsync 手册页:--delete delete extraneous files from dest dirs.

【讨论】:

  • 我如何知道哪些资产指的是旧部署的旧版本?可以保留默认数量的资产,例如部署版本。
猜你喜欢
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
  • 2015-11-13
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 2011-12-12
  • 2015-11-03
相关资源
最近更新 更多