module MyModule module ClassMethods def string(name) module_eval <<-RUBY , __FILE__, __LINE__ + 1 def #{name} raise "#{name}" #line number 6 end RUBY end end def self.included(base) base.extend(ClassMethods) end end class MyClass include MyModule string :foo end m = MyClass.new m.foo # results in # $ ruby ./test.rb #./test.rb:6:in `foo': foo (RuntimeError) # from ./test.rb:25