diff --git a/lib/rails_locale_detection/controller_methods.rb b/lib/rails_locale_detection/controller_methods.rb index 28ef7dd..a4cfeb6 100644 --- a/lib/rails_locale_detection/controller_methods.rb +++ b/lib/rails_locale_detection/controller_methods.rb @@ -9,7 +9,7 @@ module ControllerMethods module ClassMethods def detect_locale - append_before_filter LocaleDetector + prepend_before_filter LocaleDetector end end diff --git a/lib/rails_locale_detection/locale_detector.rb b/lib/rails_locale_detection/locale_detector.rb index 8d28ee7..e1ec269 100644 --- a/lib/rails_locale_detection/locale_detector.rb +++ b/lib/rails_locale_detection/locale_detector.rb @@ -2,21 +2,25 @@ module RailsLocaleDetection class LocaleDetector include DetectionMethods include LocaleAccessors - + attr_reader :controller - - delegate :cookies, :params, :request, :default_url_options, :user_locale, :to => :controller - + + delegate :params, :request, :default_url_options, :user_locale, :to => :controller + def initialize(controller = nil) @controller = controller end - + def locale_key RailsLocaleDetection.locale_key end - + + def cookies + @controller.send(:cookies) + end + def self.before(controller) new(controller).set_locale end end -end \ No newline at end of file +end diff --git a/spec/support/mocks.rb b/spec/support/mocks.rb index 5aaaf85..1e13a93 100644 --- a/spec/support/mocks.rb +++ b/spec/support/mocks.rb @@ -6,18 +6,18 @@ class MockRequest def initialize @env = {'HTTP_ACCEPT_LANGUAGE' => ''} end - + def host "localhost" end - + def ssl? false end - + def cookies {} - end + end end class MockUser @@ -56,6 +56,11 @@ def self.append_before_filter(*args) @before_filters << args end + def self.prepend_before_filter(*args) + @before_filters ||= [] + @before_filters << args + end + include RailsLocaleDetection::ControllerMethods -end \ No newline at end of file +end