Skip to content

Commit 3dbbbb3

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 3dbbbb3

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

lib/spring/application.rb

+5-1
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

+18
Original file line numberDiff line numberDiff line change
@@ -715,6 +715,24 @@ 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+
File.write(app.path("engine/lib/my_engine.rb"), <<~RUBY)
721+
require "rails/engine"
722+
723+
class MyEngine < Rails::Engine
724+
end
725+
RUBY
726+
File.write(app.path("engine/config/initializers/first.rb"), "")
727+
728+
assert_success app.spring_test_command
729+
730+
File.write(app.path("engine/config/initializers/second.rb"), "")
731+
732+
app.await_reload
733+
734+
assert_success app.spring_test_command
735+
end
718736
end
719737
end
720738
end

0 commit comments

Comments
 (0)