From 82930af1e6301399a082b95c33212e1e2ac5fbec Mon Sep 17 00:00:00 2001 From: George Claghorn Date: Sat, 24 Feb 2018 20:48:43 -0500 Subject: [PATCH] Merge pull request #32100 from eugeneius/active_storage_lazy_load_hook Use lazy load hook to configure ActiveStorage::Blob --- activestorage/app/models/active_storage/blob.rb | 2 ++ activestorage/lib/active_storage/engine.rb | 2 +- railties/test/application/loading_test.rb | 12 ++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/activestorage/app/models/active_storage/blob.rb b/activestorage/app/models/active_storage/blob.rb index 31fbc66965..0cd4ad8128 100644 --- a/activestorage/app/models/active_storage/blob.rb +++ b/activestorage/app/models/active_storage/blob.rb @@ -202,4 +202,6 @@ def extract_content_type(io) def forcibly_serve_as_binary? ActiveStorage.content_types_to_serve_as_binary.include?(content_type) end + + ActiveSupport.run_load_hooks(:active_storage_blob, self) end diff --git a/activestorage/lib/active_storage/engine.rb b/activestorage/lib/active_storage/engine.rb index 9430dde028..1e223f9f17 100644 --- a/activestorage/lib/active_storage/engine.rb +++ b/activestorage/lib/active_storage/engine.rb @@ -68,7 +68,7 @@ class Engine < Rails::Engine # :nodoc: end initializer "active_storage.services" do - config.to_prepare do + ActiveSupport.on_load(:active_storage_blob) do if config_choice = Rails.configuration.active_storage.service configs = Rails.configuration.active_storage.service_configurations ||= begin config_file = Pathname.new(Rails.root.join("config/storage.yml")) diff --git a/railties/test/application/loading_test.rb b/railties/test/application/loading_test.rb index 2632dd7cde..889ad16fb8 100644 --- a/railties/test/application/loading_test.rb +++ b/railties/test/application/loading_test.rb @@ -359,6 +359,18 @@ def test_initialize_can_be_called_at_any_time assert_predicate Rails.application, :initialized? end + test "frameworks aren't loaded during initialization" do + app_file "config/initializers/raise_when_frameworks_load.rb", <<-RUBY + %i(action_controller action_mailer active_job active_record).each do |framework| + ActiveSupport.on_load(framework) { raise "\#{framework} loaded!" } + end + RUBY + + assert_nothing_raised do + require "#{app_path}/config/environment" + end + end + private def setup_ar! -- GitLab