0
我目前正在寫一個小程序,該手錶目錄,並添加視頻文件轉換隊列。我已經能夠實現(使用resque)。簡單的紅寶石插件/擴展架構
但是添加到轉換隊列之前,我想觸發基於文件的具體行動。
如:
- 下降根據文件名
- 重命名文件
- 複製(不添加到隊列)的特定文件的某些文件
因此,我要運行一對夫婦在添加之前發生的幫助者。我希望他們以特定的順序執行,並且我希望它可以很容易地添加其他幫助程序。
我想了想,然後看起來像這樣的方式:
每一個助手是一個Ruby類的一套方法:
- 運行(執行助手)
- NEW_NAME(返回新的文件名,如果它改變)以下助手來運行並防止增加了 隊列
- 停止(防止)
所有傭工應存放在一個目錄下,並將按字母順序(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 2011-04-26 22:38:14