2011-01-19 160 views
1

我成功使用了em-dir-watcher,如命令行的example.rb文件所示,但是我發現自己需要從另一個類調用一個方法,所以我選擇了腳本/ runner改爲路由,調用rails。在腳本/運行器中運行EventMachine

我複製/粘貼示例代碼並置於self.methodName的內部和遇到的此錯誤:

MyApp的/供應商/軌道/ railties/LIB /命令/ runner.rb:48:未定義的方法`手錶「對於EventMachine的:模塊(NoMethodError)

即使我完全運行簡單的類似:

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" 

我仍然得到錯誤。我究竟做錯了什麼?

回答

1

花了一天的時間嘗試整理堆棧之後,我斷定em-dir-watcher和script/runner之間有一些固有的奇怪的相互作用。在轉移到另一個可以完成相同任務的基於事件機器的創業板(directory_watcher)之後,一切都很順利。

我知道兩個寶石之間存在性能和功能折衷,但對於我的目的,我沒有注意到其中的差異。