Я хочу иметь отдельные классы с instant_method
и class_method
следующим образом:
module ObjReviewModule ## common methods module
def own_methods(obj_)
ruby_methods = " ".methods & 1.methods
(obj_.methods - ruby_methods).map { |x| x.to_s }
end
def specific_methods(obj_,existing_=[])
self.own_methods(obj_).select { |x| !existing_.include?(x) }
end
end
class ObjReviewMethod ## instance_method
include ObjReviewModule
def get_(obj_)
own_methods(obj_).select { |x| x.start_with?("get") }
end
def to_(obj_)
own_methods(obj_).select{ |x| x.start_with?("to_") }
end
end
class ObjList < OsObjReviewMethod ## class_method
extend ObjReviewModule
def self.get_methods(obj_)
# something should be here to make OsObjReviewMethod instance_method became class_method
end
end
Я получил ObjReviewMethod
работал
object_methods = ObjReviewMethod.new
object_methods.get_(obj_) => get "own_methods" start with "get" using instance_class_method
ObjList.own_methods(obj_) => get "own_methods" with class_method
но я не мог понять, как получить class_method
без переписывания всех определений:
ObjList.get_methods(obj_) => get all "own_methods" start with "get" using class_method
Было бы идеально, если бы класс декоратора мог использовать все instance_method
базового класса как class_method