From ffaee477bde1aaca2c173b3e7e58a827acbd027d Mon Sep 17 00:00:00 2001 From: Andrew Kress Date: Mon, 29 Jul 2019 10:21:05 -0500 Subject: [PATCH 1/4] create an attribute so that webpacker can set its default path instead of hardcoding --- railties/lib/rails/engine/configuration.rb | 9 ++------- railties/test/application/configuration_test.rb | 2 +- railties/test/isolation/assets/config/webpacker.yml | 1 + 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/railties/lib/rails/engine/configuration.rb b/railties/lib/rails/engine/configuration.rb index 612bd170c6..df31862554 100644 --- a/railties/lib/rails/engine/configuration.rb +++ b/railties/lib/rails/engine/configuration.rb @@ -1,14 +1,13 @@ # 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_writer :eager_load_paths, :autoload_once_paths, :autoload_paths + attr_writer :eager_load_paths, :autoload_once_paths, :autoload_paths, :webpacker_path def initialize(root = nil) super() @@ -88,11 +87,7 @@ module Rails 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 + @webpacker_path ||= "javascript" end end end diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index 38dda20bec..96678c395c 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -1708,7 +1708,7 @@ 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 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 From 61c5a14cab2dd75a51e14e7c7d92bf233f503d6b Mon Sep 17 00:00:00 2001 From: Andrew Kress Date: Wed, 14 Aug 2019 12:36:27 -0500 Subject: [PATCH 2/4] rename to javascript_path, make attr_accessor --- railties/lib/rails/engine/configuration.rb | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/railties/lib/rails/engine/configuration.rb b/railties/lib/rails/engine/configuration.rb index df31862554..ec16f8ba0d 100644 --- a/railties/lib/rails/engine/configuration.rb +++ b/railties/lib/rails/engine/configuration.rb @@ -6,14 +6,15 @@ module Rails class Engine class Configuration < ::Rails::Railtie::Configuration attr_reader :root - attr_accessor :middleware - attr_writer :eager_load_paths, :autoload_once_paths, :autoload_paths, :webpacker_path + attr_accessor :middleware, :javascript_path + attr_writer :eager_load_paths, :autoload_once_paths, :autoload_paths def initialize(root = nil) super() @root = root @generators = app_generators.dup @middleware = Rails::Configuration::MiddlewareStackProxy.new + @javascript_path = "javascript" end # Holds generators configuration: @@ -40,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" @@ -85,10 +86,6 @@ module Rails def autoload_paths @autoload_paths ||= paths.autoload_paths end - - def webpacker_path - @webpacker_path ||= "javascript" - end end end end From 36beec7b55f9f8e3181e31b7bcf8ef04e2907351 Mon Sep 17 00:00:00 2001 From: Andrew Kress Date: Wed, 14 Aug 2019 12:36:59 -0500 Subject: [PATCH 3/4] add test to check we read new path correctly --- .../test/application/configuration_test.rb | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index 96678c395c..75574d404d 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -1712,6 +1712,27 @@ module ApplicationTests end end + test "autoload paths will exclude changed path" do + app_file "config/webpacker.yml", <<-YAML + default: &default + source_path: app/webpack + check_yarn_integrity: false + development: + <<: *default + test: + <<: *default + production: + <<: *default + YAML + + 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 + test "autoload paths are added to $LOAD_PATH by default" do app "development" From b5a52ad55b4827e627edb57e952151274dd53ded Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Mendon=C3=A7a=20Fran=C3=A7a?= Date: Thu, 15 Aug 2019 18:39:46 -0400 Subject: [PATCH 4/4] Fix the test to check for the right config --- railties/test/application/configuration_test.rb | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index 75574d404d..90de995677 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -1712,18 +1712,9 @@ module ApplicationTests end end - test "autoload paths will exclude changed path" do - app_file "config/webpacker.yml", <<-YAML - default: &default - source_path: app/webpack - check_yarn_integrity: false - development: - <<: *default - test: - <<: *default - production: - <<: *default - YAML + test "autoload paths will exclude the configured javascript_path" do + add_to_config "config.javascript_path = 'webpack'" + app_dir("app/webpack") app "development"