У меня проблемы с блоком в Ruby. Я создал класс, который следит за каталогом с помощью fssm gem. Когда происходит изменение, я хочу уведомить наблюдателей. Я использую модуль Observable.Область блока Ruby - как вызвать метод экземпляра
Код:
require 'fssm'
require 'observer'
class FSSM_Spike
include Observable
def initialize watcher
add_observer watcher
FSSM.monitor('./temp/', '**/*', :directories => true) do
update do |base, relative|
puts 'update'
notify_observers(self, 'update')
end
delete do |base, relative|
puts 'delete'
notify_observers(self, 'delete')
end
create do |base, relative|
puts 'create'
notify_observers(self, 'create')
end
end
end
end
Любые наблюдатели, которые хотят создать экземпляр FSSM_Spike должен пройти themselve новым. Затем они добавляются в список наблюдателей. Однако, когда происходит обратный вызов FSSM, метод notifiy_observers неизвестен, так как сам в этом контексте является FSSM :: Path.
Я попытался добавить еще один метод к FSSM_Spike, чтобы узнать, могу ли я назвать это, но имел тот же результат.
Как я могу вызвать методы из контекста блока?
Где определяется метод 'notify_observers'? – Agis
Это часть Наблюдаемая модуля – barry