1

我从命令行成功使用了 em-dir-watcher ,如其 example.rb 文件中所示,但我发现自己需要从另一个类调用方法,因此我选择使用脚本/运行器路由,调用 rails。

我复制/粘贴了示例代码并将其放在 self.methodName 中并遇到此错误:

myapp/vendor/rails/railties/lib/commands/runner.rb:48: EventMachine:Module (NoMethodError) 的未定义方法“watch”

即使我运行一些完全简单的东西,例如:

def self.watcher
    EM.run {
        dw = EMDirWatcher.watch '.' do |paths|
            paths.each do |path|
                puts path
            end
        end
        puts "Monitoring"
    }
end

并调用脚本/运行器:

script/runner "require 'rubygems'; require 'em-dir-watcher'; Myclass.watcher"

我仍然得到错误。我究竟做错了什么?

4

1 回答 1

1

在花了一天时间尝试整理堆栈后,我得出结论,em-dir-watcher 和脚本/运行程序之间存在一些固有的奇怪交互。在转移到另一个可以执行相同任务的基于 eventmachine 的 gem 之后(directory_watcher),一切都很好。

我知道这两种宝石之间存在性能和功能权衡,但就我的目的而言,我没有注意到差异。

于 2011-01-19T23:41:30.800 回答