Skip to content

Commit

Permalink
Merge pull request #723 from Shopify/booted-load-hook
Browse files Browse the repository at this point in the history
Watch app embedded engine initializers
  • Loading branch information
gmcgibbon authored Aug 9, 2024
2 parents c5987d5 + 6c60916 commit eefc42d
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 0 deletions.
5 changes: 5 additions & 0 deletions lib/spring/application.rb
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,11 @@ def preload

if defined?(Rails) && Rails.application
watcher.add Rails.application.paths["config/initializers"]
Rails::Engine.descendants.each do |engine|
if engine.root.to_s.start_with?(Rails.root.to_s)
watcher.add engine.paths["config/initializers"].expanded
end
end
watcher.add Rails.application.paths["config/database"]
if secrets_path = Rails.application.paths["config/secrets"]
watcher.add secrets_path
Expand Down
25 changes: 25 additions & 0 deletions test/support/acceptance_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -715,6 +715,31 @@ def exec_name
test "rails db:system:change" do
assert_success "bin/rails db:system:change --to=sqlite3"
end

test "watches embedded engine initializers" do
app.path("config/application.rb").write(<<~RUBY, mode: "a+")
$LOAD_PATH << Pathname.new(__dir__).join("../engine/lib").realpath.to_s
require "my_engine"
RUBY
engine_lib = app.path("engine/lib/my_engine.rb")
engine_lib.dirname.mkpath
engine_lib.write(<<~RUBY)
require "rails/engine"
class MyEngine < Rails::Engine
end
RUBY
engine_initializer = app.path("engine/config/initializers/one.rb")
engine_initializer.dirname.mkpath
engine_initializer.write("")

assert_success app.spring_test_command

engine_initializer.write("raise 'omg'")

assert_failure app.spring_test_command, stderr: "omg (RuntimeError)"
end
end
end
end

0 comments on commit eefc42d

Please sign in to comment.