0
@@ -5,14 +5,25 @@ module Gibberish
0
after_save :invalidate_cache
0
+ # I'm just going to hold onto these really strongly
0
+ # This will be a bug if we change the actual languages a lot
0
+ @@languages_by_name = {}
0
+ @@languages_by_id = {}
0
def self.find_cached_by_name(name)
0
-
get_cache("find_by_name:#{name}") do
0
+
@@languages_by_name[name] ||= get_cache("find_by_name:#{name}") do
0
find(:first, :conditions => {:name => name.to_s})
0
+ def self.find_cached_by_id(id)
0
+ @@languages_by_id[id] ||= get_cache id
0
clear_cache "find_by_name:#{name}"
0
+ @@languages_by_name = {}
0
+ @@languages_by_id = {}
0
@@ -28,23 +39,18 @@ module Gibberish
0
attr_accessor :arguments
0
- def self.find_cached_by_language_and_key(lang, key)
0
- cache_key = cache_key_for_language_and_key(lang,key)
0
- cached = get_cache(cache_key) {nil}
0
- cached = Translation.find_by_language_id_and_key(lang.id, key.to_s, :include => :language)
0
- set_cache(cache_key, cached)
0
+ get_cache("everything") do
0
+ Translation.find(:all, :include => :language).group_by{|l| [l.language_id, l.key]}
0
- def self.cache_key_for_language_and_key(lang,key)
0
- lang_id = lang.is_a?(Language) ? lang.id : lang
0
- ['find_by_language_id_and_key', lang_id, key.to_s[0..100]].join(':')
0
+ def self.find_cached_by_language_and_key(lang, key)
0
+ full_cached[[lang.is_a?(Language)?lang.id : lang, key]]
0
- self.class.clear_cache
(self.class.cache_key_for_language_and_key(language_id, key))0
+ self.class.clear_cache
"everything"0
def method_missing(name, *args, &block)
0
@@ -116,13 +122,23 @@ module Gibberish
0
# this is an adapter that exposes a Hash access method
0
# but calls to the model for the correct language.
0
def initialize(language)
0
-
Translation.find_cached_by_language_and_key(@language,key)0
+
all_translations[[@language.is_a?(Language) ? @language.id : @language, key]]0
alias_method :[], :translate
0
+ @cached ||= Translation.full_cached
0
+ def reset_translations
0
@@ -151,6 +167,10 @@ module Gibberish
0
alias_method_chain :translate, :db
0
+ def self.reset_translations
0
+ @@languages.each { |k,v| v.reset_translations }
0
def extract_arguments(args)
Comments
No one has commented yet.