我正在写一个小红宝石守护进程,我希望它能做到以下几点:
我现在拥有的是:
loop do
get_next_in_queue { |s| THINGS }
end
def get_next_in_queue
queue_dir = Dir[File.dirname(__FILE__)+'/../queue']
info = YAML::load_file(queue_dir[0]) #not sure if this works or not
yield info
end
如果可能的话,我想让yield有条件,所以只有在实际找到文件时才会发生。谢谢!
答案 0 :(得分:1)
好的,我有这个工作!
queue_dir.empty?
的问题是目录始终包含[".", ".."]
所以我做的是:
def get_next_in_queue
queue_dir = Dir.entries(File.dirname(__FILE__)+'/../queue')
queue_dir.delete "."
queue_dir.delete ".."
if !queue_dir.empty?
info = YAML::load_file("#{File.dirname(__FILE__)}/../queue/#{queue_dir[0]}")
yield stem_info
else
sleep(30) #since it is empty, we probably don't need to check instantly
end
end
答案 1 :(得分:0)
只需添加其他支票:
def get_next_in_queue
queue_dir = Dir[File.dirname(__FILE__)+'/../queue']
return if queue_dir.empty?
info = YAML::load_file(queue_dir[0]) #not sure if this works or not
yield info if info
end
根据您想要的行为,您可以另外引发异常,记录错误,睡眠N秒等。