aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEileen M. Uchitelle <eileencodes@users.noreply.github.com>2018-09-12 10:46:40 -0400
committerGitHub <noreply@github.com>2018-09-12 10:46:40 -0400
commitce1248a5b8944606e91edf1bc4f1f4962a4f658d (patch)
treef80a85ef9868212d9ad3b243f9233a7ebecb9e9d
parent3eb0406ef56dab8c8cd60378600a53e351de0053 (diff)
parent349db176d8283a5c16816b50a92b0b319b1b8b74 (diff)
downloadrails-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.rb4
-rw-r--r--railties/test/application/loading_test.rb33
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!