From 0f53df5ca75b6b925590a1582ff6fb578840bc9e Mon Sep 17 00:00:00 2001 From: OsamaSayegh Date: Wed, 15 Jul 2020 11:47:55 +0300 Subject: [PATCH] Don't create rails engine unless user opts in --- lib/mini_profiler/config.rb | 12 ++++++++++-- lib/mini_profiler_rails/railtie.rb | 18 +++++++++++------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/lib/mini_profiler/config.rb b/lib/mini_profiler/config.rb index 1cc4edd4..f137c0cb 100644 --- a/lib/mini_profiler/config.rb +++ b/lib/mini_profiler/config.rb @@ -60,8 +60,7 @@ def self.default :base_url_path, :disable_caching, :enabled, :flamegraph_sample_rate, :logger, :pre_authorize_cb, :skip_paths, :skip_schema_queries, :storage, :storage_failure, :storage_instance, - :storage_options, :user_provider, :enable_advanced_debugging_tools, - :assets_url + :storage_options, :user_provider, :enable_advanced_debugging_tools attr_accessor :skip_sql_param_names, :suppress_encoding, :max_sql_param_length # ui accessors @@ -72,6 +71,15 @@ def self.default # Deprecated options attr_accessor :use_existing_jquery + attr_reader :assets_url + + def assets_url=(lmbda) + if defined?(Rack::MiniProfilerRails) + Rack::MiniProfilerRails.create_engine + end + @assets_url = lmbda + end + def vertical_position position.include?('bottom') ? 'bottom' : 'top' end diff --git a/lib/mini_profiler_rails/railtie.rb b/lib/mini_profiler_rails/railtie.rb index 9f892d80..bf60aaaa 100644 --- a/lib/mini_profiler_rails/railtie.rb +++ b/lib/mini_profiler_rails/railtie.rb @@ -6,13 +6,6 @@ module Rack::MiniProfilerRails extend Rack::MiniProfilerRailsMethods - class Engine < ::Rails::Engine - engine_name 'rack-mini-profiler' - config.assets.paths << File.expand_path('../../html', __FILE__) - config.assets.precompile << 'rack-mini-profiler.js' - config.assets.precompile << 'rack-mini-profiler.css' - end - # call direct if needed to do a defer init def self.initialize!(app) @@ -125,6 +118,17 @@ def self.initialize!(app) @already_initialized = true end + def self.create_engine + return if defined?(Rack::MiniProfilerRails::Engine) + klass = Class.new(::Rails::Engine) do + engine_name 'rack-mini-profiler' + config.assets.paths << File.expand_path('../../html', __FILE__) + config.assets.precompile << 'rack-mini-profiler.js' + config.assets.precompile << 'rack-mini-profiler.css' + end + Rack::MiniProfilerRails.const_set("Engine", klass) + end + def self.subscribe(event, &blk) if ActiveSupport::Notifications.respond_to?(:monotonic_subscribe) ActiveSupport::Notifications.monotonic_subscribe(event) { |*args| blk.call(*args) }