From 627f89b189734d7c8915a74f3f57a232d3d4d0d9 Mon Sep 17 00:00:00 2001 From: kennyj Date: Thu, 26 Apr 2012 21:21:02 +0900 Subject: [PATCH] Fix #5847 and #4045. Load AR::Base before loading an application model. --- activerecord/lib/active_record/railtie.rb | 5 +++++ railties/test/application/rake_test.rb | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/activerecord/lib/active_record/railtie.rb b/activerecord/lib/active_record/railtie.rb index eb2769f1ef..db0102700b 100644 --- a/activerecord/lib/active_record/railtie.rb +++ b/activerecord/lib/active_record/railtie.rb @@ -128,5 +128,10 @@ class Railtie < Rails::Railtie end end + + config.after_initialize do + # We should load ActiveRecord::Base class before loading an application model. + require "active_record/base" + end end end diff --git a/railties/test/application/rake_test.rb b/railties/test/application/rake_test.rb index 27d521485c..8351ab3930 100644 --- a/railties/test/application/rake_test.rb +++ b/railties/test/application/rake_test.rb @@ -167,5 +167,27 @@ def test_rake_clear_schema_cache end assert !File.exists?(File.join(app_path, 'db', 'schema_cache.dump')) end + + def test_load_activerecord_base_when_we_use_observers + Dir.chdir(app_path) do + `bundle exec rails g model user; + bundle exec rake db:migrate; + bundle exec rails g observer user;` + + add_to_config "config.active_record.observers = :user_observer" + + assert_equal "0", `bundle exec rails r "puts User.count"`.strip + + app_file "lib/tasks/count_user.rake", <<-RUBY + namespace :user do + task :count => :environment do + puts User.count + end + end + RUBY + + assert_equal "0", `bundle exec rake user:count`.strip + end + end end end -- GitLab