Lokka は komagata さんが開発されている、Ruby で書かれた CMS です(旧名 Pyhä)。
打倒 WordPress を目指しているそうです。
komagata’s lokka at master – GitHub
今後使用しようと思っていて、 Plugin も書けるということで、ちょっと試してみました。
簡単に Google Analytics のトラッキングコードが挿入できる Plugin です。
$LOKKA_ROOT/plugin フォルダに hello というサンプルがあるので、それを見ながら書いてみます。
komagata さんのエントリによれば、 Sinatra Extensions のサブセットだということ。
Pyhaの大体の仕組み – komagata [p0t]
Sinatra: Writing Extensions
$LOKKA_ROOT/plugin/ に google_analytics/lib/google_analytics.rb というファイルを作りました。
そして以下を記述。
module Lokka module Helpers def analytics(uid) haml(<<-script, {}) %script{ :type => "text/javascript" } :cdata var _gaq = _gaq || []; _gaq.push(['_setAccount', '#{uid}']); _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 end end end
モジュール名をどうしたらいいのかわからなかったので、 $LOKKA_ROOT/lib/lokka/helpers.rb を参考に Lokka::Helpers に入れてしまいました。
Rails の感覚だと後は、サーバを再起動すれば動きそうですが、このままでは動きません。
おかしいなぁと思って、プロジェクトを grep してみると、 init.rb にこんな行が。
$:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'plugin', 'hello', 'lib'))
これは同じように入れないといけないんだろうかと、こう書いてみる。
$:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'plugin', 'google_analytics', 'lib'))
そしてもう一カ所、 $LOKKA_ROOT/lib/lokka.rb を見てみると
require 'lokka/hello'
なんて行があるので、同様に
require 'lokka/google_analytics'
と書いたところ、無事に動きました。