file_worker 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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