У меня есть код, как показано ниже:Singleton использования регистратора в рубине
require 'logger'
require 'singleton'
class Logger
include Singleton
@@old_initialize = Logger.instance_method :initialize
def initialize
@@old_initialize.bind(self).call(STDERR)
end
end
class MyClass
def initialize
@logger = Logger.new("output.log")
end
end
я получаю следующее сообщение об ошибке при запуске MyClass.
в
initialize': private method
новый»призвал Logger: Класс (NoMethodError)
Я использую Рубин Версия:
рубин 1.8.6 (2009-08-04 383 номера патчей) [x86_64-linux]
В чем вопрос? (TM) – sawa
Вопрос: «Почему я получаю NoMethodError»? Можете ли вы помочь в разрешении? – user2562153
Не называйте 'new'? Вместо этого используйте ': send', но убедитесь, что вы на самом деле хотите это сделать, и это не нарушает все остальное? Не делайте это синглтон, где вызов 'new' не имеет никакого смысла, потому что может быть только один? –