Archive for the ‘Ramaze’ Category
Perfume Headlineの現状について
2chは規制されていて書き込めないのでこちらで。
Perfume Headlineの本体であるまとめ氏の書き込みを配信する部分については、現在も正常に動作しているはずです。
メンバーとスタッフのBlogについては、オフィシャルサイトのリニューアルに対応できていないため動作を停止しています。PTOさんはすでに対応されているようなので、そちらを利用されることをお勧めします。
Perfume HeadlineをWordPressに移行
Perfume HeadlineをWordPressに移行させました。
これまでのRamaze+Sequelで作ったCGIと比較して、高い安定性、高速な表示、以前よりきれいなケータイ対応、iPhone対応、PubSubHubbub対応(これはうまく動かないのでまだ見送っています)などの利点があります。
実装方法は、クローラで収集した記事をXML-RPCで投稿しているだけのシンプルなものです。
datファイルの閲覧などは、これまでどおりRamaze+SequelのCGIになっています。
Ramazeでセッション情報を生成しない方法
今日ふとPerfume Headlineのキャッシュディレクトリを開いてみると、セッション情報であふれていました。
そもそもPerfume Headlineにはセッションを必要とするような機能を何も実装していないので、削除したついでにセッション情報を生成しないようにしてみました。
というわけで、以下にその方法をメモしておきます。
記述する場所はstart.rbとかでいいんじゃないでしょうか。
Ramaze::Global.no_cache_flash = false
なお、この方法はRamaze-2009.03で動作することを確認しています。
2009.04以降ではRamaze::Globalが廃止されたらしいのでたぶん動作しないと思います。
Ramazeでレンダリング結果をファイルにキャッシュする正しい方法
たまたまRamazeをインストールしたディレクトリを見ていたところ、ramaze/cache/file.rbなるファイルが。
というわけでstart.rbあたりに以下のような記述をするとキャッシュがファイルに生成されるようになり、CGIでもキャッシュを活用できるようになります。
前回書いたコードは忘れてください。
Ramaze::Global::cache = Ramaze::FileCache
あとはメモリキャッシュを用いる場合と同様にコントローラを記述すれば細かな制御が行えます。
とっても簡単できれいですね。
この方法だとCGI起動、ライブラリ読み込みのオーバーヘッドは発生してしまいますが、何もしないときよりは高速ですのでまあ十分かと思います。
ただし、Ramazeは「:(コロン)」を含んだファイル名でキャッシュを生成しようとするので、Windows環境だとローカルでのデバッグ時にエラーが発生します。
そのへんは各自対処してください。
Ramazeでレンダリング結果をファイルにキャッシュする
「mod_rewriteを使ってCGI環境で超高速にキャッシュを返す」という記事を読んで、Ramazeで同じことをやろうとしたら結構困ったのでメモしておきます。
ちなみに、Ramazeに標準で用意されているキャッシュはメモリ上にキャッシュするものなので、CGIでは使えません。
キャッシュを生成するためにはレンダリング結果のHTMLが必要なわけですが、Ramazeにはレンダリング結果を読んだり書いたりする方法は(たぶん)用意されていません。
そのため、Ramaze内部のレンダリングを行っているメソッドを上書きして強引にデータを読み取ります。
module Ramaze
class Action
unless method_defined?(:static_html_original_render)
alias_method :static_html_original_render, :render
end
def render
# オリジナルのレンダリング処理を呼び出す
content = static_html_original_render
# ここで適当に content の内容を保存
# full_pathでリクエストのパスがとれるのでこれを使うとよいです
# オリジナルと同じ値を返す
content
end
end
end
あとは冒頭で挙げた記事にあるように、.htaccessで制御、cronで古いキャッシュの削除を行えばOKです。