我有一个正在运行的 Rails 3.2.1 应用程序,我正在通过 Capistrano 进行部署deploy/assets
它运行deploy:assets:precompile
task.
一切工作都很好,除了编译本身非常慢。我没有那么多 CSS 和 JavaScript(总共大约 8200 行)。
编译资产一般需要1-3分钟左右,约占整个部署时间的90%。
有什么办法可以优化这个吗?也许使用不同的程序来编译资产或以某种方式优化它?
我在 1.9.2-p290、Rails 3.2.1 上的 Linode 512 上运行该应用程序并使用therubyracer
gem 如果有任何相关性的话。
这并不是让它运行得更快的答案,但就“不同的过程”而言,您可以告诉 Capistrano 仅在您实际对资产进行任何更改时才预编译资产。你想做一个定制assets:precompile
类似这样的任务,它将查看现有代码和新部署代码之间的 git 日志。对我来说,这非常有效,现在我只需要在更新资产时处理缓慢的部署:
namespace :deploy do
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 %Q{cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile}
else
logger.info "Skipping asset pre-compilation because there were no asset changes"
end
end
end
end
Source: http://www.bencurtis.com/2011/12/skipping-asset-compilation-with-capistrano/ http://www.bencurtis.com/2011/12/skipping-asset-compilation-with-capistrano/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)