file_worker 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/bin/file_worker CHANGED
@@ -1,17 +1,13 @@
1
- #!/usr/bin/env ruby
1
+ #!/usr/bin/env jruby
2
2
 
3
- require "rubygems"
4
- require "bundler"
5
- Bundler.require
6
-
7
- require 'file_worker/cli'
3
+ require 'file_worker'
8
4
 
9
5
  scanner = FileWorker::Cli.build_scanner
10
6
 
11
7
  scanner.on_error do |file_name, exception|
12
8
  $stderr.puts("Failed to process #{file_name}")
13
- $stderr.puts(ex)
14
- $stderr.puts(ex.backtrace.join("\n"))
9
+ $stderr.puts(exception)
10
+ $stderr.puts(exception.backtrace.join("\n"))
15
11
  end
16
12
 
17
13
  scanner.start
@@ -40,8 +40,6 @@ module FileWorker
40
40
 
41
41
  options[:out_directory] ||= File.expand_path('../done', options[:in_directory])
42
42
 
43
- puts options.inspect
44
-
45
43
  DirectoryScanner.new(options)
46
44
  end
47
45
  end
@@ -12,7 +12,9 @@ module FileWorker
12
12
  @options = options
13
13
  @in_path = Pathname.new(@options[:in_directory])
14
14
  @done_path = Pathname.new(@options[:out_directory])
15
+ @glob_path = @in_path + '**/*'
15
16
  @sleep = @options[:sleep] || 1
17
+ @workers = @options[:workers] || 5
16
18
 
17
19
  @max_queue_size = @options[:max_queue_size] || 1000
18
20
 
@@ -31,7 +33,10 @@ module FileWorker
31
33
 
32
34
  begin
33
35
  @worker_class.new(file_name, @options).process
34
- FileUtils.mv(file_name, @done_path)
36
+
37
+ done_file_name = file_name.sub(@in_path, @done_path)
38
+ FileUtils.mkdir_p(File.dirname(done_file_name))
39
+ FileUtils.mv(file_name, done_file_name)
35
40
  rescue Exception => e
36
41
  handle_error(file_name, e)
37
42
  end
@@ -40,7 +45,7 @@ module FileWorker
40
45
  end
41
46
 
42
47
  def queue
43
- @queue ||= GirlFriday::WorkQueue.new(@queue_name, :size => 3) do |file_name|
48
+ @queue ||= GirlFriday::WorkQueue.new(@queue_name, :size => @workers) do |file_name|
44
49
  process(file_name)
45
50
  end
46
51
  end
@@ -66,7 +71,8 @@ module FileWorker
66
71
  end
67
72
 
68
73
  def scan
69
- file_names = Dir.glob(@in_path + '*') - @state.keys
74
+ file_names = Dir.glob(@glob_path) - @state.keys
75
+ file_names.reject! { |file_name| File.directory?(file_name) }
70
76
 
71
77
  max_items = @max_queue_size - queue_size
72
78
 
@@ -76,6 +82,15 @@ module FileWorker
76
82
  end
77
83
 
78
84
  def start
85
+ puts "File Worker Starting"
86
+ puts " in directory #{@in_path}"
87
+ puts " out directory #{@done_path}"
88
+ puts " workers #{@workers}"
89
+ puts " max queue size #{@max_queue_size}"
90
+ puts " scan interval #{@sleep}s"
91
+ puts " worker #{@worker_class.name}"
92
+ puts ""
93
+
79
94
  @run = true
80
95
  while @run
81
96
  scan
@@ -1,3 +1,3 @@
1
1
  module FileWorker
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
data/lib/file_worker.rb CHANGED
@@ -4,4 +4,5 @@ module FileWorker
4
4
  autoload :DirectoryScanner, 'file_worker/directory_scanner'
5
5
  autoload :DefaultWorker, 'file_worker/default_worker'
6
6
  autoload :S3UploadWorker, 'file_worker/s3_upload_worker'
7
+ autoload :Cli, 'file_worker/cli'
7
8
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: file_worker
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.1
5
+ version: 0.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Mick Staugaard