respond_to method_missing define_method remove_method undef_method instance_eval 6 непонятных фраз на англицком языке, жеваный крот !

respond_to

[1,2,3].respond_to?(:count)

method_missing переопределяя этот метод, он будет вызван в тех случаях когда метода нет

def method_missing(method, *args)
  method  # имя метода которого нет
  args[0] # аргументы переданные в метод
end

define_method() уменьшает объем кода когда нужно создать много методов с однотипным кодом внутри.

@data={
:user="123456",
:tmail="tmail.ru",
:food="free"
}



# Используя метод define_method:
%w(user email food).each do |meth|
  define_method(meth) { @data[meth.to_sym] }
end

p user
p tmail
p food

remove_method удаление методов в классе, но не трогаем наследование

class A 
    def x
        puts "x from A class"
    end
end

class B < A
    def x
      
        puts "x from B Class"
    end
    remove_method :x
end

obj = B.new
obj.x

undef_method удаление методов то же самое но удаляем и то что наследовали

instance_eval динамически определит метод в экземпляре класса

class A 
    def x
        puts "x from A class"
    end
end

class B < A
    def x
      
        puts "x from B Class"
    end
    undef_method :x
end

obj = B.new
obj.instance_eval do
  def color
    "green"
  end
end

p obj.color