From 46d5314ec482f76cf75e29bc22325bc0b4564aec Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 3 Sep 2013 17:39:56 +1000 Subject: [PATCH] Improve Rails4 performance by 20%, before the median on the page is 53ms, after it is 44ms --- lib/site_setting_extension.rb | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/lib/site_setting_extension.rb b/lib/site_setting_extension.rb index 2dc91d2d81..d365fd3a69 100644 --- a/lib/site_setting_extension.rb +++ b/lib/site_setting_extension.rb @@ -231,30 +231,27 @@ module SiteSettingExtension # trivial multi db support, we can optimize this later current[name] = current_value + clean_name = name.to_s.sub("?", "") - setter = ("#{name}=").sub("?","") - - eval "define_singleton_method :#{name} do + eval "define_singleton_method :#{clean_name} do c = @@containers[provider.current_site] c = c[name] if c c end - define_singleton_method :#{setter} do |val| + define_singleton_method :#{clean_name}? do + c = @@containers[provider.current_site] + c = c[name] if c + c + end + + define_singleton_method :#{clean_name}= do |val| add_override!(:#{name}, val) refresh! end " end - def method_missing(method, *args, &block) - as_question = method.to_s.gsub(/\?$/, '') - if respond_to?(as_question) - return send(as_question, *args, &block) - end - super(method, *args, &block) - end - def enum_class(name) enums[name] end