6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/daengine/digital_asset_processor.rb', line 6
def self.process_tuple_directory
path = Daengine.config[:assets_path]
raise "ERROR: DigitalAssetProcessor: Invalid assets_path provided. Unable to read from #{path}" unless File::directory?(path)
lockfile_name = Daengine.config[:daengine_yml_file] + '.lck'
begin
lockfile = File.new(lockfile_name, File::CREAT|File::EXCL)
time = self.read_last_process_time
last_run_time = 10.years.ago
if not time.blank?
@@last_read_time = time
last_run_time = time
end
Daengine.log("DigitalAssetProcessor: Last process time was #{@@last_read_time}", "info")
deploy_files= []
deploy_files = Dir.entries(path).select {
|f| File.file?("#{path}/#{f}") and File.mtime("#{path}/#{f}") > @@last_read_time
}.sort_by { |f| File.mtime("#{path}/#{f}") }
if deploy_files.empty?
Daengine.log("WARN: DigitalAssetProcessor: No digital asset deployment files found to process under #{path}", "warn")
else
Daengine.log("DigitalAssetProcessor: Reading digital asset deployment files from #{path}", "info")
deploy_files.each do |filename|
file = File.expand_path(filename, path)
Daengine.log("DigitalAssetProcessor: Processing file #{filename} --- #{File.mtime(file)}", "info")
open_file = File.open(file, 'rb')
Daengine::TeamsiteMetadataParser.parse_tuple_file(open_file, last_run_time)
Daengine.log("DigitalAssetProcessor: Finished processing #{filename}", "info")
@@last_read_time = File.mtime(file) + 1.second
self.save_last_read_time
Daengine.log("DigitalAssetProcessor: Last process time set to #{@@last_read_time}", "info")
end
end
rescue Errno::EEXIST
Daengine.log("DigitalAssetProcessor: Already in progress. Lockfile exists at #{lockfile_name}. Aborting!", "error")
ensure
unless lockfile.nil?
lockfile.close()
File.delete(lockfile_name)
end
end
end
|