[#2180] Progress reporter that doesn't crash
This commit is contained in:
parent
6522248801
commit
c6c8bea095
2 changed files with 61 additions and 9 deletions
|
@ -69,7 +69,7 @@ namespace :'2018_12_03_finish_piece_jointe_transfer' do
|
||||||
def refresh_outdated_files
|
def refresh_outdated_files
|
||||||
rake_puts "Refresh outdated attachments"
|
rake_puts "Refresh outdated attachments"
|
||||||
|
|
||||||
bar = RakeProgressbar.new(ActiveStorage::Blob.count)
|
progress = ProgressReport.new(ActiveStorage::Blob.count)
|
||||||
refreshed_keys = []
|
refreshed_keys = []
|
||||||
missing_keys = []
|
missing_keys = []
|
||||||
old_pj_adapter.session do |old_pjs|
|
old_pj_adapter.session do |old_pjs|
|
||||||
|
@ -105,10 +105,10 @@ namespace :'2018_12_03_finish_piece_jointe_transfer' do
|
||||||
file.unlink
|
file.unlink
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
bar.inc
|
progress.inc
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
bar.finished
|
progress.finish
|
||||||
|
|
||||||
if verbose?
|
if verbose?
|
||||||
rake_puts "Refreshed #{refreshed_keys.count} attachments\n#{refreshed_keys.join(', ')}"
|
rake_puts "Refreshed #{refreshed_keys.count} attachments\n#{refreshed_keys.join(', ')}"
|
||||||
|
@ -132,7 +132,7 @@ namespace :'2018_12_03_finish_piece_jointe_transfer' do
|
||||||
end
|
end
|
||||||
rake_puts "Fix MIME types"
|
rake_puts "Fix MIME types"
|
||||||
|
|
||||||
bar = RakeProgressbar.new(ActiveStorage::Blob.count)
|
progress = ProgressReport.new(ActiveStorage::Blob.count)
|
||||||
failed_keys = []
|
failed_keys = []
|
||||||
updated_keys = []
|
updated_keys = []
|
||||||
ActiveStorage::Blob.find_each do |blob|
|
ActiveStorage::Blob.find_each do |blob|
|
||||||
|
@ -144,9 +144,9 @@ namespace :'2018_12_03_finish_piece_jointe_transfer' do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
bar.inc
|
progress.inc
|
||||||
end
|
end
|
||||||
bar.finished
|
progress.finish
|
||||||
|
|
||||||
if verbose?
|
if verbose?
|
||||||
rake_puts "Updated MIME Type for #{updated_keys.count} keys\n#{updated_keys.join(', ')}"
|
rake_puts "Updated MIME Type for #{updated_keys.count} keys\n#{updated_keys.join(', ')}"
|
||||||
|
@ -160,7 +160,7 @@ namespace :'2018_12_03_finish_piece_jointe_transfer' do
|
||||||
def remove_unused_openstack_objects
|
def remove_unused_openstack_objects
|
||||||
rake_puts "Remove unused files"
|
rake_puts "Remove unused files"
|
||||||
|
|
||||||
bar = RakeProgressbar.new(new_pjs.count.to_i)
|
progress = ProgressReport.new(new_pjs.count.to_i)
|
||||||
removed_keys = []
|
removed_keys = []
|
||||||
new_pjs.files.each do |file|
|
new_pjs.files.each do |file|
|
||||||
if !ActiveStorage::Blob.exists?(key: file.key)
|
if !ActiveStorage::Blob.exists?(key: file.key)
|
||||||
|
@ -170,9 +170,9 @@ namespace :'2018_12_03_finish_piece_jointe_transfer' do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
bar.inc
|
progress.inc
|
||||||
end
|
end
|
||||||
bar.finished
|
progress.finish
|
||||||
|
|
||||||
if verbose?
|
if verbose?
|
||||||
rake_puts "Removed #{removed_keys.count} unused objects\n#{removed_keys.join(', ')}"
|
rake_puts "Removed #{removed_keys.count} unused objects\n#{removed_keys.join(', ')}"
|
||||||
|
|
|
@ -8,3 +8,55 @@ def rake_puts(*args)
|
||||||
puts(*args)
|
puts(*args)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def rake_print(*args)
|
||||||
|
if Rake.verbose
|
||||||
|
print(*args)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class ProgressReport
|
||||||
|
def initialize(total)
|
||||||
|
@start = Time.zone.now
|
||||||
|
rake_puts
|
||||||
|
set_progress(total: total, count: 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
def inc
|
||||||
|
set_progress(count: @count + 1)
|
||||||
|
if @per_10_000 % 10 == 0
|
||||||
|
print_progress
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def finish
|
||||||
|
if @count > 0 && @per_10_000 != 10_000
|
||||||
|
set_progress(total: @count)
|
||||||
|
print_progress
|
||||||
|
end
|
||||||
|
rake_puts
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_progress(total: nil, count: nil)
|
||||||
|
if total.present?
|
||||||
|
@total = total
|
||||||
|
end
|
||||||
|
if count.present?
|
||||||
|
@count = count
|
||||||
|
@total = [@count, @total].max
|
||||||
|
end
|
||||||
|
@per_10_000 = 10_000 * @count / @total
|
||||||
|
end
|
||||||
|
|
||||||
|
def print_progress
|
||||||
|
elapsed = Time.zone.now - @start
|
||||||
|
percent = sprintf('%5.1f%%', @per_10_000 / 100.0)
|
||||||
|
total = @total.to_s
|
||||||
|
count = @count.to_s.rjust(total.length)
|
||||||
|
rake_print("\r#{percent} (#{count}/#{total}) [#{format_duration(elapsed)}/#{format_duration(elapsed * 10_000 / @per_10_000)}]")
|
||||||
|
end
|
||||||
|
|
||||||
|
def format_duration(seconds)
|
||||||
|
Time.at(seconds).utc.strftime('%H:%M:%S')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue