diff --git a/audited.gemspec b/audited.gemspec index 77ff736e..fdcf636e 100644 --- a/audited.gemspec +++ b/audited.gemspec @@ -17,6 +17,7 @@ Gem::Specification.new do |gem| gem.required_ruby_version = ">= 2.3.0" gem.add_dependency "activerecord", ">= 5.0", "< 7.1" + gem.add_dependency "request_store", "~> 1.2" gem.add_development_dependency "appraisal" gem.add_development_dependency "rails", ">= 5.0", "< 7.1" diff --git a/lib/audited.rb b/lib/audited.rb index 1b964c57..d548711e 100644 --- a/lib/audited.rb +++ b/lib/audited.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "active_record" +require "request_store" module Audited class << self @@ -24,13 +25,7 @@ def audit_class deprecate audit_model: "use Audited.audit_class instead of Audited.audit_model. This method will be removed." def store - current_store_value = Thread.current.thread_variable_get(:audited_store) - - if current_store_value.nil? - Thread.current.thread_variable_set(:audited_store, {}) - else - current_store_value - end + RequestStore.store[:audited_store] ||= {} end def config diff --git a/spec/audited_spec.rb b/spec/audited_spec.rb index db5e6379..aa142199 100644 --- a/spec/audited_spec.rb +++ b/spec/audited_spec.rb @@ -3,16 +3,12 @@ describe Audited do describe "#store" do describe "maintains state of store" do - let(:current_user) { "current_user" } + let(:current_user) { RequestStore.store[:audited_store] } before { Audited.store[:current_user] = current_user } - it "when executed without fibers" do + it "checks store is not nil" do expect(Audited.store[:current_user]).to eq(current_user) end - - it "when executed with Fibers" do - Fiber.new { expect(Audited.store[:current_user]).to eq(current_user) }.resume - end end end end