Movabletypeでいきなりエラー

2010年1月10日 0 投稿者: ぱる☆ミ

久しぶりにブログパーツでも張ってみるかと思い、管理ページからデザイン→スタイルを選んだところ
Can’t locate object method "delimiter" via package "JSON"
こんなエラーが・・・
良くユーザーが言う台詞だけれども「私は何もやっていないのに動かなくなりました」 という状況ですw
ググってみたけれども、明確な原因や対処は見つからず。
良く分からないから、取りあえずバージョンでも上げてみるかw
と思ってアップグレードするファイルを探しに行ったら、いつの間にMT5になってた・・
不調な状態でメジャーバージョンを上げるのは流石に怖いので対処療法に移るのだ。
ここに解決方法があった。(リンク先はめちゃめちゃ重い)

Known issues with non-extlib versions of modules
Class::Trigger >= 0.11_02
Error:
Got an error: mutiple trigger registration in one add_trigger() call is deprecated. at /usr/share/perl5/MT/Entry.pm line 243
Fix: http://people.debian.org/~dom/patches/movabletype-opensource/4.1/add_trigger.diff
JSON >= 2
StyleCatcher error:
Can’t locate object method “delimiter” via package “JSON” at /usr/local/share/perl/5.8.8/JSON.pm line 136.
Fix: http://people.debian.org/~dom/patches/movabletype-opensource/4.1/json.diff

更にリンク先の内容は

diff -x debian -x .svn -urN branches/upstream/4.1/plugins/StyleCatcher/lib/StyleCatcher/CMS.pm trunk/plugins/StyleCatcher/lib/StyleCatcher/CMS.pm
— branches/upstream/4.1/plugins/StyleCatcher/lib/StyleCatcher/CMS.pm 2008-02-24 13:50:55.000000000 +0000
+++ trunk/plugins/StyleCatcher/lib/StyleCatcher/CMS.pm 2008-04-15 20:31:20.000000000 +0100
@@ -100,7 +100,7 @@
# blog_loop => \@blog_loop,
blog_id => $blog_id,
themes_json => JSON::objToJson(
– $theme_data, { pretty => 1, indent => 2, delimiter => 1 }
+ $theme_data
),
auto_fetch => $url ? 1 : 0,
style_library => $stylelibrary,

というわけで、この情報を参考にして
cd plugins/StyleCatcher/lib/StyleCatcher/CMS.pm の
themes_json => JSON::objToJson(
$theme_data, { pretty => 1, indent => 2, delimiter => 1 }
と言う行を
themes_json => JSON::objToJson(
$theme_data
に修正。
これで元通り動くようになりました^^

Can’t locate object method “delimiter” via package “JSON” at /usr/local/share/perl/5.8.8/JSON.pm line 136.

なんてエラーからすると、ホスティング元がモジュールのバージョンを上げたのかな?
だとしたら「私は何もやってないのに動かなくなった」のも納得だww