Skip to content

Commit db7583f

Browse files
committed
memoize
1 parent 33c0ac5 commit db7583f

5 files changed

Lines changed: 28 additions & 6 deletions

File tree

lib/new_relic/agent/instrumentation/active_record_helper.rb

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def instrument_additional_methods
2020
def instrument_save_methods
2121
::ActiveRecord::Base.class_eval do
2222
def newrelic_model_collection_name
23-
::NewRelic::Agent.config[:active_record_use_table_name] ? self.class.table_name : self.class.name
23+
NewRelic::Agent::Instrumentation::ActiveRecordHelper.use_table_name? ? self.class.table_name : self.class.name
2424
end
2525
private(:newrelic_model_collection_name)
2626

@@ -45,7 +45,7 @@ def save!(*args, &blk)
4545
def instrument_relation_methods
4646
::ActiveRecord::Relation.class_eval do
4747
def newrelic_relation_collection_name
48-
::NewRelic::Agent.config[:active_record_use_table_name] ? self.klass.table_name : self.name
48+
NewRelic::Agent::Instrumentation::ActiveRecordHelper.use_table_name? ? self.klass.table_name : self.name
4949
end
5050
private(:newrelic_relation_collection_name)
5151

@@ -108,6 +108,12 @@ def pluck(*args, &blk)
108108
TABLE_NAME_CACHE = {}
109109
@table_name_cache_lock = Mutex.new
110110

111+
def use_table_name?
112+
return @use_table_name if defined?(@use_table_name)
113+
114+
@use_table_name = NewRelic::Agent.config[:active_record_use_table_name]
115+
end
116+
111117
# convert vendor (makara, etc.) wrapper names to their bare names
112118
# ex: postgresql_makara -> postgresql
113119
def bare_adapter_name(adapter_name)
@@ -138,7 +144,7 @@ def model_from_splits(splits)
138144
return unless splits.length == 2
139145

140146
model_name = splits.first
141-
return model_name unless NewRelic::Agent.config[:active_record_use_table_name]
147+
return model_name unless use_table_name?
142148

143149
table_name_for(model_name) || model_name
144150
end

lib/new_relic/agent/instrumentation/active_record_prepend.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# frozen_string_literal: true
44

55
require 'new_relic/agent/prepend_supportability'
6+
require 'new_relic/agent/instrumentation/active_record_helper'
67

78
module NewRelic
89
module Agent
@@ -42,7 +43,7 @@ def save!(*args, **kwargs, &blk)
4243
private
4344

4445
def newrelic_model_collection_name
45-
::NewRelic::Agent.config[:active_record_use_table_name] ? self.class.table_name : self.class.name
46+
NewRelic::Agent::Instrumentation::ActiveRecordHelper.use_table_name? ? self.class.table_name : self.class.name
4647
end
4748
end
4849

@@ -69,7 +70,7 @@ def touch(*args, **kwargs, &blk)
6970
private
7071

7172
def newrelic_model_collection_name
72-
::NewRelic::Agent.config[:active_record_use_table_name] ? self.class.table_name : self.class.name
73+
NewRelic::Agent::Instrumentation::ActiveRecordHelper.use_table_name? ? self.class.table_name : self.class.name
7374
end
7475
end
7576

@@ -107,7 +108,7 @@ def pluck(*args, &blk)
107108
private
108109

109110
def newrelic_relation_collection_name
110-
::NewRelic::Agent.config[:active_record_use_table_name] ? self.klass.table_name : self.name
111+
NewRelic::Agent::Instrumentation::ActiveRecordHelper.use_table_name? ? self.klass.table_name : self.name
111112
end
112113
end
113114
end

test/multiverse/suites/active_record/active_record_test.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ def after_setup
1414
NewRelic::Agent.drop_buffered_data
1515
end
1616

17+
def after_teardown
18+
super
19+
helper = NewRelic::Agent::Instrumentation::ActiveRecordHelper
20+
helper.remove_instance_variable(:@use_table_name) if helper.instance_variable_defined?(:@use_table_name)
21+
end
22+
1723
def test_metrics_for_calculation_methods
1824
in_web_transaction do
1925
Order.count

test/multiverse/suites/active_record_pg/active_record_test.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@ def after_setup
1414
NewRelic::Agent.drop_buffered_data
1515
end
1616

17+
def after_teardown
18+
super
19+
helper = NewRelic::Agent::Instrumentation::ActiveRecordHelper
20+
helper.remove_instance_variable(:@use_table_name) if helper.instance_variable_defined?(:@use_table_name)
21+
end
22+
1723
def test_metrics_for_calculation_methods
1824
in_web_transaction do
1925
Order.count

test/new_relic/agent/instrumentation/active_record_helper_test.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ module NewRelic::Agent::Instrumentation
1717
class ActiveRecordHelperTest < Minitest::Test
1818
def teardown
1919
ActiveRecordHelper::TABLE_NAME_CACHE.clear
20+
if ActiveRecordHelper.instance_variable_defined?(:@use_table_name)
21+
ActiveRecordHelper.remove_instance_variable(:@use_table_name)
22+
end
2023
end
2124

2225
def test_product_operation_collection_for_find

0 commit comments

Comments
 (0)