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