【发布时间】:2011-04-07 20:02:06
【问题描述】:
我目前正在编写一个小程序,它监视一个目录并将视频文件添加到转换队列中。我已经能够实现这一点(使用 resque)。
但在添加到转换队列之前,我想根据文件名触发特定操作。
例如:
- 根据文件名删除(不添加到队列中)特定文件
- 重命名文件
- 复制某些文件
因此,我想在添加之前运行几个助手。我希望它们按特定顺序执行,并且我希望添加其他帮助程序变得容易。
我的想法是这样的:
每个助手都是一个带有一组方法的 ruby 类:
- 运行(执行助手)
- new_name(如果更改,则返回新文件名)
- stop(阻止跟随助手运行并阻止添加到 队列)
所有帮助程序都应存储在一个目录中,并按字母顺序运行(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)
所以我的问题是:
有没有优雅的红宝石方式?
【问题讨论】: