電網工房・匠のWikiFarmのmod_ruby対応の不具合に対処

電網工房・匠のWikiFarmとしてHikiFarmを五つ立てているわけですが、それぞれでプラグインが働いたり働かなかったり、フッタの表示がおかしくなったりしていた問題を解決しておきました。

先月末にmod_rubyを使う新サーバに移転してから、例えば左メニューに挿入される公告がエラーになったりしていました。

Google Analyticsで五つともリンク元のキーワードとして「エイプリルフール」がわんさかと出てきた、アクセス数が急に大変動したりと、結果がぐちゃぐちゃになっていたので、これはやはりWikiFarmごとの設定が混乱しているのだと気がつきました。

mod_rubyではグローバル変数が共有されるのですが、Hikiでは一部の重要な変数がグローバルに扱われているみたいですね。Hiki-users 83 - Re: mod_ruby で複数の Hiki を動かすには?あたりを見ますと、これは仕様ということなのかな。でまあ、WikiFarmごとにカスタマイズされていたプラグインがグチャグチャに適用されてしまったいたわけで。

MLのアドバイスにもありますように、mod_ruby上で複数のHikiFarmを同じサーバで立てるのであれば、Hikiのプログラム実体は単一にしとくべきだというわけですね。しかたがないので、Hikiの実行ファイルを単一に統合して、環境変数のSERVER_NAMEを見て実行を切り替えるように、自前のプラグインなどを改修しました。たぶんうまくいったと思います。

例えばこんな感じで。

 
add_header_proc do
@server_name = ENV['SERVER_NAME']
case @server_name
when /kataribe/
@analytics_uacct = "UA-50365-7"
when /trpg/
@analytics_uacct = "UA-50365-4"
when /cre/
@analytics_uacct = "UA-50365-1"
when /koubou/
@analytics_uacct = "UA-50365-5"
when /cat/
@analytics_uacct = "UA-50365-8"
else
@analytics_uacct = "UA-50365-1"
end
<<-EOS
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "#{@analytics_uacct}";
urchinTracker();
</script>
EOS
end
 

プラグインの自作やバージョンアップの時に弊害が起きないように、マイナーなWikiFarmで移行して確認したあと更新していくという使い方はできなくなりましたが、まあしかたありませんね。

この記事へのトラックバックURL:

http://drupal.cre.jp/trackback/414


この記事をブックマーク

人気コンテンツ