Skip to content

Commit

Permalink
Merge pull request #512 from alpaca-tc/fix-spring
Browse files Browse the repository at this point in the history
follow-up #511
  • Loading branch information
bkeepers authored Sep 18, 2024
2 parents 1e8dae2 + 691f7f9 commit fe760d1
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 8 deletions.
2 changes: 1 addition & 1 deletion lib/dotenv/rails.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

# Watch all loaded env files with Spring
ActiveSupport::Notifications.subscribe("load.dotenv") do |*args|
if defined?(Spring)
if defined?(Spring) && Spring.respond_to?(:watch)
event = ActiveSupport::Notifications::Event.new(*args)
Spring.watch event.payload[:env].filename if Rails.application
end
Expand Down
28 changes: 21 additions & 7 deletions spec/dotenv/rails_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,21 @@
end

it "watches other loaded files with Spring" do
stub_spring
stub_spring(load_watcher: true)
application.initialize!
path = fixture_path("plain.env")
Dotenv.load(path)
expect(Spring.watcher).to include(path.to_s)
end

it "doesn't raise an error if Spring.watch is not defined" do
stub_spring(load_watcher: false)

expect {
application.initialize!
}.to_not raise_error
end

context "before_configuration" do
it "calls #load" do
expect(Dotenv::Rails.instance).to receive(:load)
Expand All @@ -93,7 +101,7 @@
subject { application.initialize! }

it "watches .env with Spring" do
stub_spring
stub_spring(load_watcher: true)
subject
expect(Spring.watcher).to include(fixture_path(".env").to_s)
end
Expand Down Expand Up @@ -206,13 +214,19 @@
end
end

def stub_spring
spring = Struct.new("Spring", :watcher) do
def watch(path)
watcher.add path
def stub_spring(load_watcher: true)
spring = Module.new do
if load_watcher
def self.watcher
@watcher ||= Set.new
end

def self.watch(path)
watcher.add path
end
end
end

stub_const "Spring", spring.new(Set.new)
stub_const "Spring", spring
end
end

0 comments on commit fe760d1

Please sign in to comment.