Hot folder em Ruby

Procure em “dir em” observando arquivos com extensão válida “ext []”, processe cada arquivo e salve em “dir out”

https://gist.github.com/feliper/11330170

require "FileUtils"

# que hora es ?
def hora(start)
"#{start.hour}:#{start.min}:#{start.sec}"
end

# este archivo tiene una extension válida ?
def valido?(file,ext)
if dir?(file)
return false
elsif File.file?(file) == true
name
= File.basename(file)
ext1
= name.split(".").last
if ext.include?(ext1)
return true
else
return false
end
else
return false
end
end

# existe el directorio ?
def dir?(dir)
if File.directory?(dir)
true
else
false
end
end

# De todos los archivos que hay en un directorio
# cuales tienen extrension válida ?, estos serán los que procese
def filter_ext(dir,ext)
files
=[]
no_valido
= "NO"
if dir?(dir)
files
= Dir.entries(dir)
files
.each_with_index do |name,i|
file
= dir + name
if valido?(file,ext) == false
files
[i]=no_valido
else
files
[i]=file
end
end
files
.delete no_valido
if files.length == 0
"nada"
else
files

end
else
"error1"
end
end



## DIRECTORIO de entrada de archivos
dir_in
= "C:/Users/nombre_usuario/IN/"
## DIRECTORIO de salida de archivos
dir_out
= "C:/Users/nombre_usuario/OUT/"
## extensiones que quieres VIGILAR
ext
= ["doc","docx","DOC","DOCX"]


i
= 1
count
= 1
while i != 0
salida
= filter_ext(dir_in,ext)
puts
"#{count} #{hora(Time.now)}"
if salida == "nada"
puts
"no hay archivos válidos"
elsif salida == "error1"
puts
"Error el directorio no existe"
else
puts
"hay #{salida.length} archivos válidos"

salida
.each do |file|

###############
# aqui es donde procesas el archivo
###############

# guardas el archivo procesado en el direcotrio de salida
output
= dir_out + File.basename(file)
File.rename(file,output)

end

end
sleep
(5)
count
+= 1
end