From b4c33db5084bb93e9a077fd4cae030f71f526cf1 Mon Sep 17 00:00:00 2001 From: Ivo Jesus Date: Thu, 12 Mar 2020 18:04:18 +0000 Subject: [PATCH 1/4] Skip "/packs" when serving static assets --- lib/mini_profiler_rails/railtie.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/mini_profiler_rails/railtie.rb b/lib/mini_profiler_rails/railtie.rb index ba3f73dd..41a0d2a2 100644 --- a/lib/mini_profiler_rails/railtie.rb +++ b/lib/mini_profiler_rails/railtie.rb @@ -30,6 +30,7 @@ def self.initialize!(app) if serves_static_assets?(app) c.skip_paths << app.config.assets.prefix + c.skip_paths << "/packs" end unless Rails.env.development? || Rails.env.test? From 4c92a8128c97740c3e26e9b9dff4d5dafced53cc Mon Sep 17 00:00:00 2001 From: Ivo Jesus Date: Thu, 12 Mar 2020 19:18:05 +0000 Subject: [PATCH 2/4] Skip `/packs` if Webpacker is defined and use its config to get the path --- lib/mini_profiler_rails/railtie.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/mini_profiler_rails/railtie.rb b/lib/mini_profiler_rails/railtie.rb index 41a0d2a2..341e39d1 100644 --- a/lib/mini_profiler_rails/railtie.rb +++ b/lib/mini_profiler_rails/railtie.rb @@ -30,7 +30,11 @@ def self.initialize!(app) if serves_static_assets?(app) c.skip_paths << app.config.assets.prefix - c.skip_paths << "/packs" + if defined?(Webpacker) + public_packs_folder = + Webpacker.config.public_output_path.to_s.gsub!(Webpacker.config.public_path.to_s, "") + c.skip_paths << public_packs_folder + end end unless Rails.env.development? || Rails.env.test? From 02b70edd59734581a557d58d1422b1fcbd7a8b74 Mon Sep 17 00:00:00 2001 From: Ivo Jesus Date: Mon, 16 Mar 2020 22:36:47 +0000 Subject: [PATCH 3/4] Fix: Don't mutate webpacker's config... --- lib/mini_profiler_rails/railtie.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mini_profiler_rails/railtie.rb b/lib/mini_profiler_rails/railtie.rb index 341e39d1..ece155b5 100644 --- a/lib/mini_profiler_rails/railtie.rb +++ b/lib/mini_profiler_rails/railtie.rb @@ -32,7 +32,7 @@ def self.initialize!(app) c.skip_paths << app.config.assets.prefix if defined?(Webpacker) public_packs_folder = - Webpacker.config.public_output_path.to_s.gsub!(Webpacker.config.public_path.to_s, "") + Webpacker.config.public_output_path.to_s.gsub(Webpacker.config.public_path.to_s, "") c.skip_paths << public_packs_folder end end From 7a3110a07949db62f1df6c16635e223861771f73 Mon Sep 17 00:00:00 2001 From: OsamaSayegh Date: Fri, 12 Jun 2020 19:29:33 +0300 Subject: [PATCH 4/4] Add test case --- lib/mini_profiler_rails/railtie.rb | 7 ++----- lib/mini_profiler_rails/railtie_methods.rb | 6 ++++++ rack-mini-profiler.gemspec | 3 ++- spec/fixtures/webpacker.yml | 2 ++ spec/integration/railtie_methods_spec.rb | 15 +++++++++++++++ 5 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 spec/fixtures/webpacker.yml diff --git a/lib/mini_profiler_rails/railtie.rb b/lib/mini_profiler_rails/railtie.rb index ece155b5..1d5b0c86 100644 --- a/lib/mini_profiler_rails/railtie.rb +++ b/lib/mini_profiler_rails/railtie.rb @@ -30,11 +30,8 @@ def self.initialize!(app) if serves_static_assets?(app) c.skip_paths << app.config.assets.prefix - if defined?(Webpacker) - public_packs_folder = - Webpacker.config.public_output_path.to_s.gsub(Webpacker.config.public_path.to_s, "") - c.skip_paths << public_packs_folder - end + wp_assets_path = get_webpacker_assets_path() + c.skip_paths << wp_assets_path if wp_assets_path end unless Rails.env.development? || Rails.env.test? diff --git a/lib/mini_profiler_rails/railtie_methods.rb b/lib/mini_profiler_rails/railtie_methods.rb index 6ce16712..396692f7 100644 --- a/lib/mini_profiler_rails/railtie_methods.rb +++ b/lib/mini_profiler_rails/railtie_methods.rb @@ -51,5 +51,11 @@ def should_move?(child, node) child[start] + child[duration] <= node[start] + node[duration] end + def get_webpacker_assets_path + if defined?(Webpacker) + Webpacker.config.public_output_path.to_s.gsub(Webpacker.config.public_path.to_s, "") + end + end + extend self end diff --git a/rack-mini-profiler.gemspec b/rack-mini-profiler.gemspec index 8c89d81a..81339a3d 100644 --- a/rack-mini-profiler.gemspec +++ b/rack-mini-profiler.gemspec @@ -30,7 +30,6 @@ Gem::Specification.new do |s| s.add_development_dependency 'rake', '< 11' s.add_development_dependency 'rack-test' - s.add_development_dependency 'activerecord', '~> 3.0' s.add_development_dependency 'dalli' s.add_development_dependency 'rspec', '~> 3.6.0' s.add_development_dependency 'redis' @@ -41,6 +40,8 @@ Gem::Specification.new do |s| s.add_development_dependency 'nokogiri' s.add_development_dependency 'rubocop-discourse' s.add_development_dependency 'listen' + s.add_development_dependency 'webpacker', '~> 5.1' + s.add_development_dependency 'rails', '~> 5.1' s.require_paths = ["lib"] end diff --git a/spec/fixtures/webpacker.yml b/spec/fixtures/webpacker.yml new file mode 100644 index 00000000..519b031a --- /dev/null +++ b/spec/fixtures/webpacker.yml @@ -0,0 +1,2 @@ +development: + public_output_path: some/assets/path diff --git a/spec/integration/railtie_methods_spec.rb b/spec/integration/railtie_methods_spec.rb index 929dc447..851d935c 100644 --- a/spec/integration/railtie_methods_spec.rb +++ b/spec/integration/railtie_methods_spec.rb @@ -178,4 +178,19 @@ def to_seconds(array) expect(@current_timer[cts]).to eq({}) end end + + it '#get_webpacker_assets_path returns webpacker public_output_path if webpacker exists' do + expect(described_class.get_webpacker_assets_path()).to eq(nil) + require 'rails' + require 'webpacker' + tmp_path = Pathname.new("/tmp/rails_root_#{SecureRandom.hex}") + FileUtils.mkdir(tmp_path) + Webpacker.instance = Webpacker::Instance.new( + root_path: tmp_path, + config_path: Pathname.new(File.expand_path("../fixtures/webpacker.yml", __dir__)) + ) + expect(described_class.get_webpacker_assets_path()).to eq("/some/assets/path") + ensure + FileUtils.rm_rf(tmp_path) + end end