Если вы хотите добавить методы к любому классу (в данном случае String
), без его исправления, вам следует рассмотреть возможность использования уточнений .
module StringRefinements
refine String do
def already_taken?
puts "yes!"
end
end
end
# in another file...
using StringRefinements
"Charlotte".already_taken?
Метод already_taken?
будет доступен только в области, которая вызывает using StringRefinements
, и больше нигде.