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... ]