Ruby Metaprogramming
- by VP
I'm trying to write a DSL that allows me to do
Policy.name do
 author "Foo"
 reviewed_by "Bar"
end
The following code can almost process it:
class Policy
  include Singleton
  def self.method_missing(name,&block)
      puts name
      puts "#{yield}"
  end
  def self.author(name)
   puts name
  end
  def self.reviewed_by(name)
   puts name
  end
end
Defining my method as class methods (self.method_name) i can access it using the following syntax:
Policy.name do
 Policy.author "Foo"
 Policy.reviewed_by "Bar"
end
If i remove the "self" from the method names, and try to use my desired syntax, then i receive an error "Method not Found" in the Main so it could not find my function until the module Kernel. Its ok, i understand the error. But how can i fix it? How can i fix my class to make it work with my desired syntax that?