• ブログ
  • ふぉとす
  • キーワード
  • ブックマーク
  • 写真
  • ログイン

Title

« 2007年07月01日 | 2007年07月03日 »
  • Railsでスイーパーを使ってみる 2007-07-02 00:00:00

     kaeruspoonにスイーパーを導入してみました。実はずいぶん昔に使っていたことがあったのだけど、この新しいkaeruspoonになってからはまだ導入してなかったのです。
     スイーパーというのは、主にキャッシュと併用して使うものです。オブサーバとDBのフックメソッドを使って実現されていて、フックメソッドにとらえられるようなイベント(DBへのCRUD)のときにやりたい処理(expireを使ったキャッシュの失効しかないと思うけど)を一箇所にまとめることができます。
     「2007年05月10日」の日記の日記にフラグメントキャッシュのことを書いているけど、スイーパーを使うともっとシンプルにできます。スイーパーはDBを監視するやつなので、普通はRAILSROOT/app/modelsの下に置きます。

    class SidebarSweeper < ActionController::Caching::Sweeper
      observe AmazonList, YoutubeList, Tag
    
      def after_save(dumy)
        free_fragment
      end
    
      def after_destroy(dumy)
        free_fragment
      end
    
      private
    
      def free_fragment
        expire_fragment 'sidebar_contents'
      end
    end
    

    スイーパーはActionController::Caching::Sweeperのサブクラスとして定義します。監視したいテーブルをobserveを使って指定します。これはオブサーバと一緒ですね。フックメソッドを定義するところも同じです。
     キャッシュする箇所は、ビューで指定します。

    <% cache 'sidebar_contents' do -%>
      <%= view_amazon_items @amazon_items %>
      <%= view_youtube_items @youtube_items %>
      <%= view_all_tags @all_tags %>
    <% end %>
    

     フラグメントキャッシュはそれを識別するためにコントローラとアクションを指定することが多いと思いますが、ここでキャッシュしたいものは複数のアクションから呼ばれるので、単に名前をつけるだけにしています。こっちのほうが結局シンプルでいいかも。
     このままではスイーパーは働いてくれません。四六時中監視するわけじゃなくて、こちらが指定したときにしか監視してくれないのです。それはコントローラで指定してあげます。

    require 'sidebar'
    
    class AdminDiariesController < ApplicationController
      cache_sweeper :sidebar_sweeper, :only =>[:update, :destroy]
    ....(省略)....
    

     cache_sweeperを使って、働かせたいスイーパーと、どのアクションのときに働かせるかを指定します。これですべてOK。requireしているのは、Railsがsidebar_sweeperを見つけられないときがあるためです。

    • イナイ×イナイ (講談社ノベルス モF- 38)
    • 出版社/メーカー: 講談社
    • メディア: 新書
    • 発売日: 2007-05-10

     「「イナイ×イナイ (講談社ノベルス モF- 38)」」を買いました。買ってしまった。買う気がなくても気を抜くと買ってしまっているのが恐ろしい。

    Commentコメント(0) Pageリンク元(81) Append 179
  • ハイパフォーマンスWebサイト ―高速サイトを実現する14のルール
    作者/アーティスト: 武舎 広幸,福地 太郎,武舎 るみ
    メディア: 大型本
    Write Great Code〈Vol.2〉低いレベルで考え高いレベルで書く
    作者/アーティスト: 鵜飼 文敏,まつもと ゆきひろ,後藤 正徳,八重樫 剛史,トップスタジオ
    メディア: 単行本
« 2007年07月01日 | 2007年07月03日 »

プロフィール

おおいしつかさ

Amazon商品の一覧

人気の記事ベスト10

  • 1.apache+mod_proxy_balancer+mongrelでRailsを動かす方法
  • 2.Perlでevalを使ってみる
  • 3.バージョン管理をsubversionからgitに移行してみた
  • 4.tokyobikeのドロップハンドル化
  • 5.ubuntu8.04でデュアルディスプレイを使う
  • 6.restful_authenticationを使ってみた
  • 7.URLなど、長い英字を折り返して表示する方法
  • 8.Rspecでコントローラのspecファイルを書く
  • 9.フラグメントキャッシュをRailsで使う。
  • 10.RailsとPostfixで受信メールを処理する方法

コメント

  • ユル(プログラマが若隠居をしたら)
  • ユル(風邪ひいた)
  • ユル(バイクがへたくそになっていた)
  • おおいしつかさ(便利になって不便になる)
  • 武石(便利になって不便になる)
  • ユル(劇場版 天元突破グレンラガン)
  • ユル(フラニーとゾーイー (新潮文庫): サリンジャー, 野崎 孝: 本)

過去の記事

2006年
12月
2007年
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月
2008年
1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月

キーワード一覧

ActionScript AmazonResources git javascript kaeruspoon milook NSR Objective-C Rails Ruby Ruby on Rails subversion Thin tokyobike ubuntu VAIO VAIO typeZ Waves Xen ぐりぐり カンタロー スノボー ドトール ドライブ バイク プログラミング ユルさん 執筆 日本酒 模型 真中洋嗣 自転車

Youtube

ニコニコ動画