app/console_report.rb
app/reports/console_report.rb
app/console_report.rb
app/reports/console_report.rb
+8
-2
app/import_worker.rb
+8
-2
app/import_worker.rb
···
3
3
require_relative 'init'
4
4
require_relative 'import_manager'
5
5
require_relative 'models/import'
6
+
require_relative 'reports/basic_report'
6
7
7
8
class ImportWorker
9
+
attr_accessor :verbose
10
+
8
11
class UserThread < Thread
9
-
def initialize(user, collections)
12
+
def initialize(user, collections, verbose = false)
10
13
@user = user
14
+
@verbose = verbose
15
+
11
16
super { run(collections) }
12
17
end
13
18
···
17
22
18
23
def run(collections)
19
24
import = ImportManager.new(@user)
25
+
import.report = BasicReport.new if @verbose
20
26
import.start(collections, false)
21
27
end
22
28
end
···
30
36
ActiveRecord::Base.transaction do
31
37
if user = User.with_unfinished_imports.where.not(id: @user_threads.map(&:user_id)).first
32
38
collections = user.imports.unfinished.map(&:collection)
33
-
thread = UserThread.new(user, collections)
39
+
thread = UserThread.new(user, collections, @verbose)
34
40
@user_threads << thread
35
41
end
36
42
end
+13
app/reports/basic_report.rb
+13
app/reports/basic_report.rb
+22
bin/worker
+22
bin/worker
···
11
11
ActiveRecord::Base.logger = nil
12
12
end
13
13
14
+
def print_help
15
+
puts "Usage: #{$0} [options...]"
16
+
puts "Options:"
17
+
puts " -v = verbose"
18
+
end
19
+
14
20
worker = ImportWorker.new
21
+
22
+
args = ARGV.dup
23
+
24
+
while arg = args.shift
25
+
case arg
26
+
when '-v', '--verbose'
27
+
worker.verbose = true
28
+
when '-h', '--help'
29
+
print_help
30
+
exit 0
31
+
else
32
+
puts "Unrecognized option: #{arg}"
33
+
print_help
34
+
exit 1
35
+
end
36
+
end
15
37
16
38
trap("SIGINT") {
17
39
puts "Stopping..."
+1
-1
lib/tasks/import.rake
+1
-1
lib/tasks/import.rake
···
1
-
require_relative '../../app/console_report'
2
1
require_relative '../../app/import_manager'
3
2
require_relative '../../app/item_queue'
4
3
require_relative '../../app/models/user'
5
4
require_relative '../../app/post_downloader'
5
+
require_relative '../../app/reports/console_report'
6
6
7
7
task :enqueue_user do
8
8
unless ENV['DID']