私は現在、ディレクトリを監視してビデオファイルを変換キューに追加する小さなプログラムを作成しています。私はそれを達成することができました(resqueを使用して)。シンプルなルビープラグイン/拡張アーキテクチャ
変換キューに追加する前に、ファイル名に基づいて特定のアクションをトリガーします。
例:
- ドロップ
- コピー
- 名前変更ファイルのファイル名に応じて特定のファイルを(キューに追加しない)特定のファイル
は、そのため私は、カップルを実行したいです追加の前にヘルパーの私はそれらを特定の順序で実行したい、私はそれが他のヘルパーを追加することは容易でありたい。
私はそれについて考えた方法は次のようになります。
すべてのヘルパーは、メソッドのセットを持つルビークラスです:
- 実行(ヘルパーを実行)
- NEW_NAME(リターン新しいファイル名が変更された場合)
- stop(実行するヘルパーの実行を防止し、 キューに追加できないように)
すべてのヘルパーは、1つのディレクトリに格納され、アルファベット順(ext/00_helper1.rb、ext/01_helper2.rb ...)で実行されます。
擬似コードは次のようになります。
filename = <parameter>
stop = false
for each file in ext/*.rb
obj = asClass(file).new_instance(filename)
obj.run
if (obj.new_name) filename = obj.new_name
if (obj.stop)
stop = true
break
end
end
if not stop add_to_queue(filename)
だから私の質問は次のとおりです。
は、エレガントなルビーの方法は何ですか?
はい私は考えを得る。しかし、それはスレッドセーフなのだろうかと思います。複数のスレッドが一度に変換を開始すると、グローバル変数での書き込みは良い考えではありません。 – leifg