ソース管理上に、google analyticsのトラッキングコードを含めたくないなぁ
と思ったので、capistranoでデプロイする際に、sedで置換するtaskを書いてみました。
書き方
filter
deploy.simlinkの後に実行するようにします。
名前はinsert_js
after "deploy:symlink", "deploy:insert_js"
task
なんのことはなく、sedで置換してるだけです。
(シングルクォートやら、エスケープやらで少々嵌りましたが)
desc "insert js" task :insert_js, :roles => :app do stats = <<-JS <script type='text/javascript'> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'your_account']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); </script> JS layout = "#{current_path}/app/views/layouts/application.html.erb" #run "sed -i 's%</body>%#{stats}</body>%' #{layout}" run "sed -i \"s%</body>%#{stats}</body>%\" #{layout}" end