monoの開発ブログ

プログラム開発の記録

Archive for the ‘Ramaze’ Category

Perfume Headlineの現状について

without comments

2chは規制されていて書き込めないのでこちらで。

Perfume Headlineの本体であるまとめ氏の書き込みを配信する部分については、現在も正常に動作しているはずです。
メンバーとスタッフのBlogについては、オフィシャルサイトのリニューアルに対応できていないため動作を停止しています。PTOさんはすでに対応されているようなので、そちらを利用されることをお勧めします。

【PTO】Perfume Thread Outliner【チキプン】

Written by mono

2月 15th, 2010 at 11:17 pm

Posted in Perfume, Ramaze, Ruby

Perfume HeadlineをWordPressに移行

without comments

Perfume HeadlineをWordPressに移行させました。
これまでのRamaze+Sequelで作ったCGIと比較して、高い安定性、高速な表示、以前よりきれいなケータイ対応、iPhone対応、PubSubHubbub対応(これはうまく動かないのでまだ見送っています)などの利点があります。

実装方法は、クローラで収集した記事をXML-RPCで投稿しているだけのシンプルなものです。
datファイルの閲覧などは、これまでどおりRamaze+SequelのCGIになっています。

Written by mono

8月 27th, 2009 at 3:03 pm

Ramazeでセッション情報を生成しない方法

without comments

今日ふとPerfume Headlineのキャッシュディレクトリを開いてみると、セッション情報であふれていました。
そもそもPerfume Headlineにはセッションを必要とするような機能を何も実装していないので、削除したついでにセッション情報を生成しないようにしてみました。

というわけで、以下にその方法をメモしておきます。
記述する場所はstart.rbとかでいいんじゃないでしょうか。

Ramaze::Global.sessions = false
Ramaze::Global.no_cache_flash = false

なお、この方法はRamaze-2009.03で動作することを確認しています。
2009.04以降ではRamaze::Globalが廃止されたらしいのでたぶん動作しないと思います。

Written by mono

5月 28th, 2009 at 7:46 pm

Posted in Ramaze, Ruby

Tagged with , ,

Ramazeでレンダリング結果をファイルにキャッシュする正しい方法

without comments

たまたまRamazeをインストールしたディレクトリを見ていたところ、ramaze/cache/file.rbなるファイルが。
というわけでstart.rbあたりに以下のような記述をするとキャッシュがファイルに生成されるようになり、CGIでもキャッシュを活用できるようになります。
前回書いたコードは忘れてください。

Ramaze::Global::cache = Ramaze::FileCache

あとはメモリキャッシュを用いる場合と同様にコントローラを記述すれば細かな制御が行えます。
とっても簡単できれいですね。
この方法だとCGI起動、ライブラリ読み込みのオーバーヘッドは発生してしまいますが、何もしないときよりは高速ですのでまあ十分かと思います。

ただし、Ramazeは「:(コロン)」を含んだファイル名でキャッシュを生成しようとするので、Windows環境だとローカルでのデバッグ時にエラーが発生します。
そのへんは各自対処してください。

Written by mono

5月 2nd, 2009 at 8:31 pm

Posted in Ramaze, Ruby

Tagged with , ,

Ramazeでレンダリング結果をファイルにキャッシュする

with 3 comments

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です。

Written by mono

4月 19th, 2009 at 7:02 pm

Posted in Ramaze, Ruby

Tagged with , ,