You're overcomplicating this - since all you want is the ability to bind a block to a specific method name, just do that!
class Big
def self.converter(&block)
define_singleton_method :convert, &block
end
end
class Small < Big
converter {|v| v.to_i + 1 }
end
That way, when you invoke Small::converter
, it will define a class method that accepts a parameter list as defined in your block args, and the return value will be the return value of your block.