class Dropkiq::DropClassAnalyzer
Attributes
active_record_class[RW]
drop_method_params[RW]
liquid_drop_class[RW]
table_name[RW]
Public Class Methods
new(liquid_drop_class)
click to toggle source
# File lib/dropkiq/drop_class_analyzer.rb, line 6 def initialize(liquid_drop_class) self.liquid_drop_class = liquid_drop_class end
Public Instance Methods
analyze()
click to toggle source
# File lib/dropkiq/drop_class_analyzer.rb, line 10 def analyze self.active_record_class = find_active_record_class self.active_record_class ||= find_active_record_class_from_shim if active_record_class.blank? puts "WARNING: No ActiveRecord Class found for #{liquid_drop_class.name} (skipping)" return end self.table_name = active_record_class.table_name self.drop_method_params = find_drop_method_params end
to_param()
click to toggle source
# File lib/dropkiq/drop_class_analyzer.rb, line 23 def to_param return {} if active_record_class.blank? { "#{table_name}" => { "methods" => drop_method_params } } end
Private Instance Methods
find_active_record_class()
click to toggle source
# File lib/dropkiq/drop_class_analyzer.rb, line 35 def find_active_record_class namespaces = liquid_drop_class.name.split("::") class_name = namespaces.pop non_drop = class_name.gsub('Drop', '') namespaces.push(non_drop).join("::").constantize rescue NameError end
find_active_record_class_from_shim()
click to toggle source
github.com/Shopify/liquid/pull/568
# File lib/dropkiq/drop_class_analyzer.rb, line 45 def find_active_record_class_from_shim namespaces = liquid_drop_class.name.split("::") namespaces[0..-2].join("::").constantize rescue NameError end
find_drop_method_params()
click to toggle source
# File lib/dropkiq/drop_class_analyzer.rb, line 51 def find_drop_method_params default_methods = (Liquid::Drop.instance_methods + Object.instance_methods) instance_methods = (liquid_drop_class.instance_methods - default_methods) sample_instance = active_record_class.first sample_drop = begin liquid_drop_class.new(sample_instance) rescue end instance_methods.inject({}) do |hash, method| analyzer = Dropkiq::DropMethodAnalyzer.new(self, method, sample_drop) analyzer.analyze hash.merge!(analyzer.to_param) end.sort_by { |key| key }.to_h end