アップグレードしたのはよいが・・・

Movable Typeを「3.2日本語版 Release-2」にアップグレードした。
事前にデータベースをSQLiteにしておいたこともあり、アップグレード自体は非常にスムーズに行った。
ダウンロードしてきた「3.2日本語版 Release-2」を解凍後、mt-config.cgiの変更。さらに自分で手を加えていたCMS.pmとTrackback.pmに、必要な変更を行った。そして、説明の手順通りにサーバーにアップロードして、パーミッションの変更後にmt.cgiを実行する。すると、新しくなった管理画面が現れた!
最後に、全体を再構築してアップデート完了。
一応すべてバックアップを取っておいたとはいえ、再構築が終わるまではちょっとドキドキした。
再構築にかかる時間は多少短くなったように感じたが、計ったわけではないので、気のせいかも(笑)
で、ここまではよかったのだが。
しかーし!
「最近のコメント」の動向がおかしい!
新しくコメントがついた記事が上に表示されるようにしてあるのに、ソートされてこないのだ。
あれこれテスト投稿して動向を調べたところ、どうも「最後のコメント」の投稿時刻順ではなくて、そのエントリーについた「最初のコメント」の投稿時刻順でソートされているようだ。
今回のアップデートでは「recently_commented_onの処理を見直し、パフォーマンスが低下していた現象を修正」とあるので、この処理になんらかの手が加えられたことは間違いないのだが、私と同じような症状が出ている人はいないようで、ネットをあさっても情報が見つからない。
泣く泣く自力で解決策を探すことにした。

前回のリリースとは、5つの差分ファイルがあるとのことだった。おそらくそこに解決策があるだろうと踏んで、スクリプト内に「recently_commented_on」関連の記述があるものを探す。すると、「ContextHandlers.pm」なるファイルにそれらしい記述が見つかった。
そのあたりをじーっと見つめていると・・・
どうも、並べ替えの条件のところが、Postgresの場合しか指定されていないような・・・希ガス
自信はなかったけど、883行目あたりを書き換えてみる。
具体的には、ifの条件文から「&& MT::ConfigMgr->instance()->ObjectDriver =~ /postgres/」を削除してやる。

@entries = MT::Entry->load(\%terms, \%args);
if ($args->{recently_commented_on}
&& MT::ConfigMgr->instance()->ObjectDriver =~ /postgres/) {
my @e = sort {$b->comment_latest->created_on <=> $a->comment_latest->created_on}
@entries;
@entries = splice(@e, 0, $args->{recently_commented_on});
$no_resort = 1;
}

これで再構築してみると、あっ、思ったように並びが変わってる!成功、成功!
とりあえずはうまく行ったのだけれど、素人作業なので、今後他のところに影響が出ないか、ちょっと心配。
本当は866?875行目あたりで並べ替えされているような気もするんだが、んーちょっと知識不足で・・・。
それに、これは私に固有の問題なのか、それともSQLite+3.2-ja-2に共通の問題なのかがよく分からない。
他の人は、何ともないんだろうかしら・・・?
【追記】recently_commented_onの挙動不審について



  •  

    ブログパーツの貼り付け方はこちらへ
  • 月別アーカイブ

  • あいさつ掲示板

  • メタ情報