capistranoでデプロイ時にgoogle analyticsのトラッキングコードを仕込む方法

ソース管理上に、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