1

コマンド ラインから example.rb ファイルに示されているように、 em-dir-watcherを使用して成功しましたが、別のクラスからメソッドを呼び出す必要があることに気付いたので、代わりにスクリプト/ランナー ルートを選択し、Rails を呼び出しました。

サンプル コードをコピーして貼り付け、self.methodName 内に配置すると、次のエラーが発生しました。

myapp/vendor/rails/railties/lib/commands/runner.rb:48: EventMachine:Module の未定義メソッド `watch' (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"

それでもエラーが発生します。私は何を間違っていますか?

4

1 に答える 1

1

スタックを整理するためにもう 1 日を費やした後、em-dir-watcher とスクリプト/ランナーの間に本質的に奇妙な相互作用があるという結論に達しました。同じタスク ( directory_watcher ) を実行できる別の eventmachine ベースの gem に移動した後、すべてがうまく機能しました。

2 つの gem の間にパフォーマンスと機能のトレードオフがあることは知っていますが、私の目的では、違いはわかりません。

于 2011-01-19T23:41:30.800 に答える