module Cult::Drivers::Common::ClassMethods
Public Instance Methods
memoize(method_name)
click to toggle source
# File lib/cult/drivers/common.rb, line 21 def memoize(method_name) old_method_name = "#{method_name}_unmemoized".to_sym alias_method old_method_name, method_name var_name = "@#{method_name}".to_sym define_method(method_name) do if !instance_variable_defined?(var_name) instance_variable_set(var_name, send(old_method_name)) end instance_variable_get(var_name) end define_method("#{method_name}_unmemo!") do remove_instance_variable(var_name) end end
with_id_mapping(method_name)
click to toggle source
Lets us write a method “something_map” that returns {'ident' => …}, and also get a function “something” that returns the keys.
# File lib/cult/drivers/common.rb, line 13 def with_id_mapping(method_name) new_method = method_name.to_s.sub(/_map\z/, '') define_method(new_method) do send(method_name).keys end end