Hot folder in Ruby
Look into "dirin" watching files with valid extension "ext[ ]", process each file and save to "dirout"
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
Written by Felipe Rojas
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Ruby
Authors
Related Tags
#ruby
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#