MethodCallSituationから called_num を引き剥がす
Closed this issue · 2 comments
shakemurasan commented
現状、MethodCallSituation
でメソッドの呼び出し回数(called_num
)を持ってしまっているため、
呼び出し検出時にSELECT文を発行する作りになってしまっており、プロダクションコードのオーバーヘッドが増えている。
module OkuribitoRails
class ObserveMethod
def patch_okuribito
Okuribito::OkuribitoPatch.new(
once_detect: config_once_detect
) do |method_name, _obj_name, caller_info, class_name, method_symbol|
situation = MethodCallSituation.find_by(class_name: class_name,
method_symbol: method_symbol,
method_name: method_name)
if situation.present?
situation.increment!(:called_num)
MethodCallLog.create(method_call_situation: situation,
class_name: class_name,
method_symbol: method_symbol,
method_name: method_name,
back_trace: caller_info[0])
end
end
end
private
def config_once_detect
OkuribitoRails.config.once_detect
end
end
end
そこで、
MethodCallSituation
からcalled_num
を引き剥がすMethodCallLog
からMethodCallSituation
への関連を引き剥がすMethodCallSituationsController
でMethodCallLog
からメソッド呼び出し回数を導出するようにする
という修正を行う
shakemurasan commented
called_num
が入っていないと(キャッシュされていないと)、未呼出のメソッド検索機能が実装できなくなってしまうため、今の作りのままにした方がいい
shakemurasan commented
本issueは対応しない