From a2c3cee04fe311b353fdb5224efa90abc95273de Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Wed, 30 May 2018 09:54:50 +0200 Subject: [PATCH 1/4] Store the controller variable in the current Thread property. Fix a deprecation message with minitest --- .../action_controller/caching/sweeper.rb | 21 ++++++++++++++----- test/helper.rb | 2 +- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lib/rails/observers/action_controller/caching/sweeper.rb b/lib/rails/observers/action_controller/caching/sweeper.rb index f6bf1ba..e549383 100644 --- a/lib/rails/observers/action_controller/caching/sweeper.rb +++ b/lib/rails/observers/action_controller/caching/sweeper.rb @@ -1,11 +1,17 @@ module ActionController #:nodoc: module Caching class Sweeper < ActiveRecord::Observer #:nodoc: - attr_accessor :controller - def initialize(*args) super - @controller = nil + self.controller = nil + end + + def controller + Thread.current["observer:#{self.class.name}_controller"] + end + + def controller=(controller) + Thread.current["observer:#{self.class.name}_controller"] = controller end def before(controller) @@ -53,8 +59,13 @@ def callback(timing) end def method_missing(method, *arguments, &block) - return super unless @controller - @controller.__send__(method, *arguments, &block) + return super if controller.nil? + controller.__send__(method, *arguments, &block) + end + + # @see https://robots.thoughtbot.com/always-define-respond-to-missing-when-overriding + def respond_to_missing?(method, include_private = false) + (controller.present? && controller.respond_to?(method)) || super end end end diff --git a/test/helper.rb b/test/helper.rb index 62ca506..f16637c 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -1,5 +1,5 @@ require 'minitest/autorun' -require 'mocha/mini_test' +require 'mocha/minitest' require 'active_record' require 'rails' require 'rails/observers/activerecord/active_record' From 70b68f7fcfd053c4ed9081772ae05c83d2f925ff Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Wed, 30 May 2018 10:15:19 +0200 Subject: [PATCH 2/4] Recover old mini_test require --- test/helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/helper.rb b/test/helper.rb index f16637c..62ca506 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -1,5 +1,5 @@ require 'minitest/autorun' -require 'mocha/minitest' +require 'mocha/mini_test' require 'active_record' require 'rails' require 'rails/observers/activerecord/active_record' From 33f3dfd400ad0b117699d81a7378307f4bcc1b61 Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Wed, 30 May 2018 11:02:37 +0200 Subject: [PATCH 3/4] Fix minitest to 5.8 because 5.11 is not compatible with current tests --- Gemfile | 1 + gemfiles/rails_4_2.gemfile | 1 + gemfiles/rails_5_0.gemfile | 1 + gemfiles/rails_master.gemfile | 1 + test/helper.rb | 2 +- 5 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 2dffe56..0e9cee0 100644 --- a/Gemfile +++ b/Gemfile @@ -2,6 +2,7 @@ source 'https://rubygems.org' # Specify your gem's dependencies in active_record-observers.gemspec gemspec +gem "minitest", "~> 5.8.4" gem 'rails', github: 'rails/rails', branch: '5-1-stable' gem 'activeresource', github: 'rails/activeresource' diff --git a/gemfiles/rails_4_2.gemfile b/gemfiles/rails_4_2.gemfile index f26e524..cc1e6e5 100644 --- a/gemfiles/rails_4_2.gemfile +++ b/gemfiles/rails_4_2.gemfile @@ -1,6 +1,7 @@ source "https://rubygems.org" gem "mocha", require: false +gem "minitest", "~> 5.8.4" gem "rails", "~> 4.2.0" gemspec path: "../" diff --git a/gemfiles/rails_5_0.gemfile b/gemfiles/rails_5_0.gemfile index 5ce3aad..9e820ae 100644 --- a/gemfiles/rails_5_0.gemfile +++ b/gemfiles/rails_5_0.gemfile @@ -2,6 +2,7 @@ source "https://rubygems.org" # Specify your gem"s dependencies in active_record-observers.gemspec gem "rails", github: "rails/rails", branch: "5-0-stable" +gem "minitest", "~> 5.8.4" gem "activeresource", github: "rails/activeresource" gem "mocha", require: false diff --git a/gemfiles/rails_master.gemfile b/gemfiles/rails_master.gemfile index c177dd9..e350aae 100644 --- a/gemfiles/rails_master.gemfile +++ b/gemfiles/rails_master.gemfile @@ -2,6 +2,7 @@ source "https://rubygems.org" # Specify your gem"s dependencies in active_record-observers.gemspec gem "rails", github: "rails/rails" +gem "minitest", "~> 5.8.4" gem "activeresource", github: "rails/activeresource" gem "mocha", require: false diff --git a/test/helper.rb b/test/helper.rb index 62ca506..f16637c 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -1,5 +1,5 @@ require 'minitest/autorun' -require 'mocha/mini_test' +require 'mocha/minitest' require 'active_record' require 'rails' require 'rails/observers/activerecord/active_record' From 281f63e5fa482c9b269da788115918af61aa126b Mon Sep 17 00:00:00 2001 From: Angel M De Miguel Date: Fri, 29 Jun 2018 14:55:25 +0200 Subject: [PATCH 4/4] Remove comment --- lib/rails/observers/action_controller/caching/sweeper.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/rails/observers/action_controller/caching/sweeper.rb b/lib/rails/observers/action_controller/caching/sweeper.rb index e549383..e81c120 100644 --- a/lib/rails/observers/action_controller/caching/sweeper.rb +++ b/lib/rails/observers/action_controller/caching/sweeper.rb @@ -63,7 +63,6 @@ def method_missing(method, *arguments, &block) controller.__send__(method, *arguments, &block) end - # @see https://robots.thoughtbot.com/always-define-respond-to-missing-when-overriding def respond_to_missing?(method, include_private = false) (controller.present? && controller.respond_to?(method)) || super end