Permalink
Browse files

Fix observers with AR::Model

  • Loading branch information...
jonleighton committed Jun 15, 2012
1 parent a205bf8 commit ae3767c799708992f60442ab2e08b9108f01e5ed
@@ -3,6 +3,7 @@
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
@@ -39,6 +39,7 @@ def #{name}; ActiveRecord::Model.#{name}; end
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
@@ -110,20 +110,21 @@ class Railtie < Rails::Railtie
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
@@ -618,5 +618,26 @@ def index
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

0 comments on commit ae3767c

Please sign in to comment.