diff --git a/lib/dotenv/rails.rb b/lib/dotenv/rails.rb index a56bd84..ab4613a 100644 --- a/lib/dotenv/rails.rb +++ b/lib/dotenv/rails.rb @@ -10,8 +10,8 @@ Dotenv.instrumenter = ActiveSupport::Notifications # Watch all loaded env files with Spring -if defined?(Spring) - ActiveSupport::Notifications.subscribe("load.dotenv") do |*args| +ActiveSupport::Notifications.subscribe("load.dotenv") do |*args| + if defined?(Spring) event = ActiveSupport::Notifications::Event.new(*args) Spring.watch event.payload[:env].filename if Rails.application end diff --git a/spec/dotenv/rails_spec.rb b/spec/dotenv/rails_spec.rb index f50088a..1e4bd0a 100644 --- a/spec/dotenv/rails_spec.rb +++ b/spec/dotenv/rails_spec.rb @@ -34,7 +34,6 @@ Rails.env = "test" Rails.application = nil Rails.logger = nil - Spring.watcher = Set.new # Responds to #add begin # Remove the singleton instance if it exists @@ -76,6 +75,7 @@ end it "watches other loaded files with Spring" do + stub_spring application.initialize! path = fixture_path("plain.env") Dotenv.load(path) @@ -93,6 +93,7 @@ subject { application.initialize! } it "watches .env with Spring" do + stub_spring subject expect(Spring.watcher).to include(fixture_path(".env").to_s) end @@ -204,4 +205,14 @@ expect(Dotenv::Rails.logger).to be(logger) end end + + def stub_spring + spring = Struct.new("Spring", :watcher) do + def watch(path) + watcher.add path + end + end + + stub_const "Spring", spring.new(Set.new) + end end