2

目前,我进行了设置,以便 capistrano git 在生产服务器上提取最新代码、捆绑安装和资产在每个 Web 服务器上单独预编译它。

我遇到的问题是有时会花费很长时间并占用大量资源,从而影响生产服务器的性能。

我正在寻找如何最好地做到这一点的指导方针。

如果有人有这方面的经验并且可以分享他们的意见,我将非常感激。

我正在寻找这是一个好/坏的主意,以及我应该注意哪些常见的陷阱。

我也将感谢任何可以帮助解决此问题的博客文章/教程/文档的链接。

谢谢阅读。

  • 安吉特。
4

1 回答 1

1

这是我的工作。尝试添加它namespace :deploy

namespace :assets do
  desc 'Run the precompile task locally and rsync with shared'
  task :precompile, :roles => :web, :except => { :no_release => true } do
    unless skip_assets
      %x{bundle exec rake assets:clean RAILS_ENV=#{rails_env}}
      run_local "bundle exec rake assets:precompile RAILS_ENV=#{rails_env}"
      servers = find_servers_for_task(current_task)
      port_option = port ? "-e 'ssh -p #{port}'" : ''
      servers.each do |server|
        %x{rsync --recursive --times --rsh=ssh --compress --human-readable --progress #{port_option} public/assets #{user}@#{server}:#{shared_path}}
      end
      %x{bundle exec rake assets:clean RAILS_ENV=#{rails_env}}
    end
  end
end

def run_local(cmd)
  system cmd
  if($?.exitstatus != 0) then
    puts 'exit code: ' + $?.exitstatus.to_s
    exit
  end
end
于 2014-11-25T07:45:38.357 回答