Skip to content

Commit

Permalink
refactoring, add spec
Browse files Browse the repository at this point in the history
  • Loading branch information
cctiger36 committed Nov 11, 2013
1 parent d4d8767 commit 5350159
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 28 deletions.
15 changes: 1 addition & 14 deletions lib/model_observer/active_record3.rb
Expand Up @@ -3,8 +3,8 @@ module ActiveRecord
class << self
def enable
require 'active_record'
require 'model_observer/querying'
overwrite_instantiate
overwrite_find_by_sql
end

def overwrite_instantiate
Expand All @@ -19,19 +19,6 @@ def instantiate(record)
end
end
end

def overwrite_find_by_sql
::ActiveRecord::Querying.class_eval do
alias_method :origin_find_by_sql, :find_by_sql

def find_by_sql(sql, binds = [])
::ActiveSupport::Notifications.instrumenter.instrument(
"instantiate.model_observer",
:sql => connection.to_sql(sanitize_sql(sql), binds),
:name => "#{name} Instantiate") { origin_find_by_sql(sql, binds) }
end
end
end
end
end
end
15 changes: 1 addition & 14 deletions lib/model_observer/active_record4.rb
Expand Up @@ -3,8 +3,8 @@ module ActiveRecord
class << self
def enable
require 'active_record'
require 'model_observer/querying'
overwrite_instantiate
overwrite_find_by_sql
end

def overwrite_instantiate
Expand All @@ -19,19 +19,6 @@ def instantiate(record, column_types = {})
end
end
end

def overwrite_find_by_sql
::ActiveRecord::Querying.class_eval do
alias_method :origin_find_by_sql, :find_by_sql

def find_by_sql(sql, binds = [])
::ActiveSupport::Notifications.instrumenter.instrument(
"instantiate.model_observer",
:sql => connection.to_sql(sanitize_sql(sql), binds),
:name => "#{name} Instantiate") { origin_find_by_sql(sql, binds) }
end
end
end
end
end
end
10 changes: 10 additions & 0 deletions lib/model_observer/querying.rb
@@ -0,0 +1,10 @@
::ActiveRecord::Querying.class_eval do
alias_method :origin_find_by_sql, :find_by_sql

def find_by_sql(sql, binds = [])
ActiveSupport::Notifications.instrumenter.instrument(
"instantiate.model_observer",
:sql => connection.to_sql(sanitize_sql(sql), binds),
:name => "#{name} Instantiate") { origin_find_by_sql(sql, binds) }
end
end
10 changes: 10 additions & 0 deletions spec/model_observer/querying_spec.rb
@@ -0,0 +1,10 @@
require 'spec_helper'

module ModelObserver
describe "#find_by_sql" do
it "should publish notifications of instantiation when #find_by_sql called" do
expect(ActiveSupport::Notifications.instrumenter).to receive(:instrument).with("instantiate.model_observer", kind_of(Hash))
Author.all.to_a
end
end
end

0 comments on commit 5350159

Please sign in to comment.