目前,我进行了设置,以便 capistrano git 在生产服务器上提取最新代码、捆绑安装和资产在每个 Web 服务器上单独预编译它。
我遇到的问题是有时会花费很长时间并占用大量资源,从而影响生产服务器的性能。
我正在寻找如何最好地做到这一点的指导方针。
如果有人有这方面的经验并且可以分享他们的意见,我将非常感激。
我正在寻找这是一个好/坏的主意,以及我应该注意哪些常见的陷阱。
我也将感谢任何可以帮助解决此问题的博客文章/教程/文档的链接。
谢谢阅读。
- 安吉特。
目前,我进行了设置,以便 capistrano git 在生产服务器上提取最新代码、捆绑安装和资产在每个 Web 服务器上单独预编译它。
我遇到的问题是有时会花费很长时间并占用大量资源,从而影响生产服务器的性能。
我正在寻找如何最好地做到这一点的指导方针。
如果有人有这方面的经验并且可以分享他们的意见,我将非常感激。
我正在寻找这是一个好/坏的主意,以及我应该注意哪些常见的陷阱。
我也将感谢任何可以帮助解决此问题的博客文章/教程/文档的链接。
谢谢阅读。
这是我的工作。尝试添加它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