define_method creates a method from a block.

Define Method

define_method.rb
suffix = 
formatter_class = Class.new do
  define_method(:decorate) do |text|
    "#{text}#{suffix}"
  end
end

formatter = formatter_class.new
message = formatter.decorate("Ruby")

puts "suffix=#{suffix}"
puts "message=#{message}"
suffix = 
formatter_class = Class.new do
  define_method(:decorate) do |text|
    "#{text}#{suffix}"
  end
end

formatter = formatter_class.new
message = formatter.decorate("Ruby")

puts "suffix=#{suffix}"
puts "message=#{message}"
suffix = 
formatter_class = Class.new do
  define_method(:decorate) do |text|
    "#{text}#{suffix}"
  end
end

formatter = formatter_class.new
message = formatter.decorate("Ruby")

puts "suffix=#{suffix}"
puts "message=#{message}"
define method `define_method` is useful when several methods follow a shared pattern.