diff options
author | Eileen M. Uchitelle <eileencodes@users.noreply.github.com> | 2018-09-12 10:46:40 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-12 10:46:40 -0400 |
commit | ce1248a5b8944606e91edf1bc4f1f4962a4f658d (patch) | |
tree | f80a85ef9868212d9ad3b243f9233a7ebecb9e9d | |
parent | 3eb0406ef56dab8c8cd60378600a53e351de0053 (diff) | |
parent | 349db176d8283a5c16816b50a92b0b319b1b8b74 (diff) | |
download | rails-ce1248a5b8944606e91edf1bc4f1f4962a4f658d.tar.gz rails-ce1248a5b8944606e91edf1bc4f1f4962a4f658d.tar.bz2 rails-ce1248a5b8944606e91edf1bc4f1f4962a4f658d.zip |
Merge pull request #33856 from eileencodes/fix-query-cache-to-load-before-first-request
Fix query cache to load before first request
-rw-r--r-- | activerecord/lib/active_record/railtie.rb | 4 | ||||
-rw-r--r-- | railties/test/application/loading_test.rb | 33 |
2 files changed, 34 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/railtie.rb b/activerecord/lib/active_record/railtie.rb index 47351588d3..b213754641 100644 --- a/activerecord/lib/active_record/railtie.rb +++ b/activerecord/lib/active_record/railtie.rb @@ -180,9 +180,7 @@ end_warning end initializer "active_record.set_executor_hooks" do - ActiveSupport.on_load(:active_record) do - ActiveRecord::QueryCache.install_executor_hooks - end + ActiveRecord::QueryCache.install_executor_hooks end initializer "active_record.add_watchable_files" do |app| diff --git a/railties/test/application/loading_test.rb b/railties/test/application/loading_test.rb index 889ad16fb8..d7f4f09665 100644 --- a/railties/test/application/loading_test.rb +++ b/railties/test/application/loading_test.rb @@ -371,6 +371,39 @@ class LoadingTest < ActiveSupport::TestCase end end + test "active record query cache hooks are installed before first request" do + app_file "app/controllers/omg_controller.rb", <<-RUBY + begin + class OmgController < ActionController::Metal + ActiveSupport.run_load_hooks(:action_controller, self) + def show + if ActiveRecord::Base.connection.query_cache_enabled + self.response_body = ["Query cache is enabled."] + else + self.response_body = ["Expected ActiveRecord::Base.connection.query_cache_enabled to be true"] + end + end + end + rescue => e + puts "Error loading metal: \#{e.class} \#{e.message}" + end + RUBY + + app_file "config/routes.rb", <<-RUBY + Rails.application.routes.draw do + get "/:controller(/:action)" + end + RUBY + + require "#{rails_root}/config/environment" + + require "rack/test" + extend Rack::Test::Methods + + get "/omg/show" + assert_equal "Query cache is enabled.", last_response.body + end + private def setup_ar! |