Skip to content

Commit 7f053a7

Browse files
andrewn617gmcgibbon
andcommitted
Add embedded engine initializers to spring watcher
This will allow embedded engine initializers to reload the application when changed. Previously, the server would have to be reloaded manually. Co-Authored-By: Gannon McGibbon <[email protected]>
1 parent c5987d5 commit 7f053a7

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

lib/spring/application.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,11 @@ def preload
123123
watcher.add Spring.gemfile, Spring.gemfile_lock
124124

125125
if defined?(Rails) && Rails.application
126-
watcher.add Rails.application.paths["config/initializers"]
126+
Rails::Engine.descendants.each do |engine|
127+
if engine.root.to_s.start_with?(Rails.root.to_s)
128+
watcher.add engine.paths["config/initializers"]
129+
end
130+
end
127131
watcher.add Rails.application.paths["config/database"]
128132
if secrets_path = Rails.application.paths["config/secrets"]
129133
watcher.add secrets_path

test/support/acceptance_test.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -715,6 +715,26 @@ def exec_name
715715
test "rails db:system:change" do
716716
assert_success "bin/rails db:system:change --to=sqlite3"
717717
end
718+
719+
test "watches embedded engine initializers" do
720+
engine_file = app.path("engine/lib/my_engine.rb")
721+
engine_file.mkpath
722+
engine_file.write(<<~RUBY)
723+
require "rails/engine"
724+
725+
class MyEngine < Rails::Engine
726+
end
727+
RUBY
728+
app.path("engine/config/initializers/first.rb").write("")
729+
730+
assert_success app.spring_test_command
731+
732+
app.path("engine/config/initializers/second.rb").write("")
733+
734+
app.await_reload
735+
736+
assert_success app.spring_test_command
737+
end
718738
end
719739
end
720740
end

0 commit comments

Comments
 (0)