我在 Ruby 中遇到了一些问题。我创建了一个使用 fssm gem 监视目录的类。当发生变化时,我想通知观察者。我正在使用 Observable 模块。
代码:
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 实例的观察者都必须将它们自己传递给新的。然后将这些添加到列表观察者中。但是,当 FSSM 回调发生时,notifiy_observers 方法是未知的,因为该上下文中的 self 是 FSSM::Path。
我尝试向 FSSM_Spike 添加另一种方法,看看是否可以调用它,但结果相同。
如何从块上下文中调用方法?