У меня есть пара файлов. В одном я хотел бы расширить некоторые классы Ruby, например.
module Stylable
class Array
def styled
"\n" << "*"*72 << self.to_s << "*"*72 << "\n"
end
end
end
В другом файле я определяю класс и смешиваю свой пользовательский модуль.
require './stylable'
class Printer
include Stylable
def initialize(object)
@object = object
end
def print
puts @object.styled
end
end
Printer.new([1,2,3]).print
По какой-то причине я не могу использовать свой собственный метод Array#styled
:
$ ruby printer.rb
printer.rb:10:in `print': undefined method `styled' for [1, 2, 3]:Array (NoMethodError)
from array_printer.rb:14:in `<main>'
Что я делаю не так?
Редактировать: решение от @MarekLipka ниже работает в Ruby 2+. Я должен сделать это на Ruby 1.9.3/Rails 3. Есть ли способ сделать это, или мне нужно использовать расширение глобального класса без оболочки модуля?