How do I use define_method to create class methods?

Chinasaur picture Chinasaur · Apr 15, 2009 · Viewed 47.5k times · Source

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...

Answer

fguillen picture fguillen · Nov 8, 2010

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