Don't forget to lycansubscribe

added some progress logging to the worker

Changed files
+44 -3
app
bin
lib
tasks
app/console_report.rb app/reports/console_report.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
··· 1 + class BasicReport 2 + def update(data) 3 + data.each do |k, v| 4 + if k == :downloader 5 + p ({ k => v }) if v[:downloaded_posts] && v[:downloaded_posts] % 100 == 0 6 + elsif k == :queue 7 + next 8 + else 9 + p ({ k => v}) 10 + end 11 + end 12 + end 13 + end
+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 - 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']