diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index cbaab6cc33..62456e5ab9 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -351,7 +351,7 @@ module Rails files, dirs = config.watchable_files.dup, config.watchable_dirs.dup ActiveSupport::Dependencies.autoload_paths.each do |path| - dirs[path.to_s] = [:rb] + File.file?(path) ? files << path.to_s : dirs[path.to_s] = [:rb] end [files, dirs] diff --git a/railties/test/application/watcher_test.rb b/railties/test/application/watcher_test.rb new file mode 100644 index 0000000000..f2c436b47c --- /dev/null +++ b/railties/test/application/watcher_test.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +require "isolation/abstract_unit" + +module ApplicationTests + class WatcherTest < ActiveSupport::TestCase + include ActiveSupport::Testing::Isolation + + setup :build_app + teardown :teardown_app + + def app + @app ||= Rails.application + end + + test "watchable_args classifies files included in autoload path" do + add_to_config <<-RUBY + config.file_watcher = ActiveSupport::EventedFileUpdateChecker + RUBY + app_file "app/README.md", "" + + require "#{rails_root}/config/environment" + + files, _ = Rails.application.watchable_args + assert_includes files, "#{rails_root}/app/README.md" + end + end +end