Повторное открытие классов
Все классы в Ruby открыты для расширения, так что вы можете просто сделать это ...
Class String
def my_new_method(args)
# Some sort of modification to self
self.replace "SOME CALCULATED VALUE"
end
end
... где-то в вашем коде. Я несколько раз модифицировал строку в разных приложениях - обычно я просто помещаю изменения в один конкретный модуль, чтобы их можно было легко использовать повторно или удалять по мере необходимости.
Изменение отдельных объектов
Модификация класса в целом опасна, так как очень трудно определить все последствия - однажды я сломал Merb, изменив метод в классе String. Гораздо безопаснее модифицировать отдельные объекты. Это легко сделать в Ruby - вы используете ключевое слово extend . Вы определяете модуль, добавляете свою функцию и затем изменяете целевой объект. Этот пример ...
module Humor
def tickle
"hee, hee!"
end
end
a = "Grouchy"
a.extend Humor
a.tickle » "hee, hee!"
взято из кирки
Chris