[前][次][番号順一覧][スレッド一覧]

rails:1868

From: OZAWA Sakuro <sakuro@e...>
Date: Sun, 3 Dec 2006 17:51:53 +0900
Subject: [rails:1868] Re: GetTextとキャッシュ

さくです。

FileStore限定で、tmp/cache も決め打ちというダサダサな作り 
ですが、
言語ごとにキャッシュディレクトリを tmp/cache/LANG に分ける 
ことで、
どの言語のキャッシュがあるかを知るようにしてみました。

思い切り回り道をしている感が……

app/controllers/application.rb
#
   def cache_erb_fragment_with_lang(block, name = {}, options = nil)
     if name.is_a? Hash and ! name.include?(:lang)
       name = name.merge(:lang => GetText.locale.language)
     end
     cache_erb_fragment_without_lang(block, name, options)
   end
   alias_method_chain :cache_erb_fragment, :lang

   hide_action :cache_erb_fragment_with_lang
   hide_action :cache_erb_fragment_without_lang

   private

   def fragment_cache_key_with_lang(name)
     name_dup = name.dup
     lang = name_dup.delete(:lang) if name.is_a? Hash
     key = fragment_cache_key_without_lang(name_dup)
     lang.blank? ? key : '%s/%s' % [ lang, key ]
   end
   alias_method_chain :fragment_cache_key, :lang

   def expire_fragment_with_lang(name, options=nil)
     if name.is_a? Hash
       languages = Dir[File.join(RAILS_ROOT, 'tmp/cache', '*')].map{| 
l| File.basename(l)}
       languages.each do |lang|
         expire_fragment_without_lang(name.merge(:lang => lang),  
options)
       end
     end
   end
   alias_method_chain :expire_fragment, :lang
#
end

> 以下のようにしてみましたが、たとえばenとjaの 
> localeデータしか用意していない場合にブラウザが要求する言語を  
> fr にしてリクエストすると、lang=frのキャッシュが出来てし 
> まい、これが消せなくなりますね。

-
OZAWA Sakuro <mailto:sakuro@e...>
♪踊れや(踊れや) 黄泉路の宴(妖の刻) 我は 
舞巫女(神の生贄) 戯れよ(捧げよ) いざ
EXEC_PAJA/.#Misya extracting / 志方あきこ


--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      1866 2006-12-03 06:47 [sakuro@e...         ] GetTextとキャッシュ                     
      1867 2006-12-03 07:52 ┗[sakuro@e...         ]                                       
->    1868 2006-12-03 09:51  ┗[sakuro@e...         ]