Search code examples
rubymetaprogrammingclass-method

How do I use define_method to create class methods?


This is useful if you are trying to create class methods metaprogramatically:

def self.create_methods(method_name)
    # To create instance methods:
    define_method method_name do
      ...
    end

    # To create class methods that refer to the args on create_methods:
    ???
end

My answer to follow...


Solution

  • I think in Ruby 1.9 you can do this:

    class A
      define_singleton_method :loudly do |message|
        puts message.upcase
      end
    end
    
    A.loudly "my message"
    
    # >> MY MESSAGE