diff --git a/railties/lib/rails/engine/configuration.rb b/railties/lib/rails/engine/configuration.rb index 612bd170c6..ec16f8ba0d 100644 --- a/railties/lib/rails/engine/configuration.rb +++ b/railties/lib/rails/engine/configuration.rb @@ -1,13 +1,12 @@ # frozen_string_literal: true require "rails/railtie/configuration" -require "yaml" module Rails class Engine class Configuration < ::Rails::Railtie::Configuration attr_reader :root - attr_accessor :middleware + attr_accessor :middleware, :javascript_path attr_writer :eager_load_paths, :autoload_once_paths, :autoload_paths def initialize(root = nil) @@ -15,6 +14,7 @@ module Rails @root = root @generators = app_generators.dup @middleware = Rails::Configuration::MiddlewareStackProxy.new + @javascript_path = "javascript" end # Holds generators configuration: @@ -41,7 +41,7 @@ module Rails paths.add "app", eager_load: true, glob: "{*,*/concerns}", - exclude: ["assets", webpacker_path] + exclude: ["assets", javascript_path] paths.add "app/assets", glob: "*" paths.add "app/controllers", eager_load: true paths.add "app/channels", eager_load: true, glob: "**/*_channel.rb" @@ -86,14 +86,6 @@ module Rails def autoload_paths @autoload_paths ||= paths.autoload_paths end - - def webpacker_path - if File.file?("#{Rails.root}/config/webpacker.yml") - YAML.load_file("#{Rails.root}/config/webpacker.yml")[Rails.env]["source_path"]&.gsub("app/", "") - else - "javascript" - end - end end end end diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index b44edbc7d3..a737966a32 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -1708,7 +1708,19 @@ module ApplicationTests app "development" ActiveSupport::Dependencies.autoload_paths.each do |path| assert_not_operator path, :ends_with?, "app/assets" - assert_not_operator path, :ends_with?, "app/#{Rails.configuration.webpacker_path}" + assert_not_operator path, :ends_with?, "app/javascript" + end + end + + test "autoload paths will exclude the configured javascript_path" do + add_to_config "config.javascript_path = 'webpack'" + app_dir("app/webpack") + + app "development" + + ActiveSupport::Dependencies.autoload_paths.each do |path| + assert_not_operator path, :ends_with?, "app/assets" + assert_not_operator path, :ends_with?, "app/webpack" end end diff --git a/railties/test/isolation/assets/config/webpacker.yml b/railties/test/isolation/assets/config/webpacker.yml index 0b1f43a407..7dfae999c1 100644 --- a/railties/test/isolation/assets/config/webpacker.yml +++ b/railties/test/isolation/assets/config/webpacker.yml @@ -1,4 +1,5 @@ default: &default + source_path: app/javascript check_yarn_integrity: false development: <<: *default