diff options
author | Jon Leighton <j@jonathanleighton.com> | 2012-06-15 18:04:13 +0100 |
---|---|---|
committer | Jon Leighton <j@jonathanleighton.com> | 2012-06-15 19:15:37 +0100 |
commit | ae3767c799708992f60442ab2e08b9108f01e5ed (patch) | |
tree | a24cbb8ca1735dd4b22b6ad3997ec761e249e9be | |
parent | a205bf878084d74872fbad45fac030ad2cb74970 (diff) | |
download | rails-ae3767c799708992f60442ab2e08b9108f01e5ed.tar.gz rails-ae3767c799708992f60442ab2e08b9108f01e5ed.tar.bz2 rails-ae3767c799708992f60442ab2e08b9108f01e5ed.zip |
Fix observers with AR::Model
-rw-r--r-- | activerecord/lib/active_record/attribute_assignment.rb | 1 | ||||
-rw-r--r-- | activerecord/lib/active_record/model.rb | 1 | ||||
-rw-r--r-- | activerecord/lib/active_record/railtie.rb | 7 | ||||
-rw-r--r-- | railties/test/application/configuration_test.rb | 21 |
4 files changed, 27 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/attribute_assignment.rb b/activerecord/lib/active_record/attribute_assignment.rb index 269fc3e381..b36c90fc08 100644 --- a/activerecord/lib/active_record/attribute_assignment.rb +++ b/activerecord/lib/active_record/attribute_assignment.rb @@ -3,6 +3,7 @@ require 'active_support/concern' module ActiveRecord ActiveSupport.on_load(:active_record_config) do mattr_accessor :whitelist_attributes, instance_accessor: false + mattr_accessor :mass_assignment_sanitizer, instance_accessor: false end module AttributeAssignment diff --git a/activerecord/lib/active_record/model.rb b/activerecord/lib/active_record/model.rb index 831745856b..d51cb30ec1 100644 --- a/activerecord/lib/active_record/model.rb +++ b/activerecord/lib/active_record/model.rb @@ -39,6 +39,7 @@ module ActiveRecord module Model extend ActiveSupport::Concern extend ConnectionHandling + extend ActiveModel::Observing::ClassMethods # This allows us to detect an ActiveRecord::Model while it's in the process of being included. module Tag; end diff --git a/activerecord/lib/active_record/railtie.rb b/activerecord/lib/active_record/railtie.rb index bcafcbb76c..9432a70c41 100644 --- a/activerecord/lib/active_record/railtie.rb +++ b/activerecord/lib/active_record/railtie.rb @@ -110,20 +110,21 @@ module ActiveRecord config.after_initialize do |app| ActiveSupport.on_load(:active_record) do - ActiveRecord::Base.instantiate_observers + ActiveRecord::Model.instantiate_observers ActionDispatch::Reloader.to_prepare do - ActiveRecord::Base.instantiate_observers + ActiveRecord::Model.instantiate_observers end end ActiveSupport.on_load(:active_record) do if app.config.use_schema_cache_dump filename = File.join(app.config.paths["db"].first, "schema_cache.dump") + if File.file?(filename) cache = Marshal.load File.binread filename if cache.version == ActiveRecord::Migrator.current_version - ActiveRecord::Base.connection.schema_cache = cache + ActiveRecord::Model.connection.schema_cache = cache else warn "schema_cache.dump is expired. Current version is #{ActiveRecord::Migrator.current_version}, but cache version is #{cache.version}." end diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index c1a68c5786..f57391003a 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -618,5 +618,26 @@ module ApplicationTests make_basic_app assert app.config.colorize_logging end + + test "config.active_record.observers" do + add_to_config <<-RUBY + config.active_record.observers = :foo_observer + RUBY + + app_file 'app/models/foo.rb', <<-RUBY + class Foo < ActiveRecord::Base + end + RUBY + + app_file 'app/models/foo_observer.rb', <<-RUBY + class FooObserver < ActiveRecord::Observer + end + RUBY + + require "#{app_path}/config/environment" + + ActiveRecord::Base + assert defined?(FooObserver) + end end end |