diff options
author | Thibaut Girka <thib@sitedethib.com> | 2018-08-26 13:52:12 +0200 |
---|---|---|
committer | Thibaut Girka <thib@sitedethib.com> | 2018-08-26 14:23:24 +0200 |
commit | 36393e1d2b1ce82916bd43ca1068e34cea6f6e39 (patch) | |
tree | a18d7f5e7753ff40355d2a6d4ab9fb765ad4c263 /lib | |
parent | 2903f8f36b7c41b77de4ad6c8c5b0a6c0b2a7ace (diff) | |
parent | f37fafe30b5f6ff85ebf87fb622293a855877ee1 (diff) |
Merge branch 'master' into glitch-soc/merge-upstream
Conflicts: app/views/layouts/application.html.haml Edited: app/helpers/application_helper.rb app/views/admin/domain_blocks/new.html.haml Conflict wasn't really one, just two changes too close to one another. Edition was to adapt the class names for themes to class names for skins and flavours. Also edited app/views/admin/domain_blocks/new.html.haml to strip the duplicate admin pack inclusion thing.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/cli.rb | 11 | ||||
-rw-r--r-- | lib/mastodon/media_cli.rb | 47 | ||||
-rw-r--r-- | lib/tasks/mastodon.rake | 13 |
3 files changed, 62 insertions, 9 deletions
diff --git a/lib/cli.rb b/lib/cli.rb new file mode 100644 index 000000000..7e82806b6 --- /dev/null +++ b/lib/cli.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require 'thor' +require_relative 'mastodon/media_cli' + +module Mastodon + class CLI < Thor + desc 'media SUBCOMMAND ...ARGS', 'manage media files' + subcommand 'media', Mastodon::MediaCLI + end +end diff --git a/lib/mastodon/media_cli.rb b/lib/mastodon/media_cli.rb new file mode 100644 index 000000000..cc6ad07d9 --- /dev/null +++ b/lib/mastodon/media_cli.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +require_relative '../../config/boot' +require_relative '../../config/environment' + +# rubocop:disable Rails/Output + +module Mastodon + class MediaCLI < Thor + option :days, type: :numeric, default: 7 + option :background, type: :boolean, default: false + desc 'remove', 'remove remote media files' + long_desc <<-DESC + Removes locally cached copies of media attachments from other servers. + + The --days option specifies how old media attachments have to be before + they are removed. It defaults to 7 days. + + With the --background option, instead of deleting the files sequentially, + they will be queued into Sidekiq and the command will exit as soon as + possible. In Sidekiq they will be processed with higher concurrency, but + it may impact other operations of the Mastodon server, and it may overload + the underlying file storage. + DESC + def remove + time_ago = options[:days].days.ago + queued = 0 + + MediaAttachment.where.not(remote_url: '').where.not(file_file_name: nil).where('created_at < ?', time_ago).select(:id).reorder(nil).find_in_batches do |media_attachments| + if options[:background] + queued += media_attachments.size + Maintenance::UncacheMediaWorker.push_bulk(media_attachments.map(&:id)) + else + media_attachments.each do |m| + Maintenance::UncacheMediaWorker.new.perform(m) + print '.' + end + end + end + + puts + puts "Scheduled the deletion of #{queued} media attachments" if options[:background] + end + end +end + +# rubocop:enable Rails/Output diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake index 191ce634c..519c21785 100644 --- a/lib/tasks/mastodon.rake +++ b/lib/tasks/mastodon.rake @@ -222,7 +222,7 @@ namespace :mastodon do end if prompt.yes?('Do you want to access the uploaded files from your own domain?') - env['S3_CLOUDFRONT_HOST'] = prompt.ask('Domain for uploaded files:') do |q| + env['S3_ALIAS_HOST'] = prompt.ask('Domain for uploaded files:') do |q| q.required true q.default "files.#{env['LOCAL_DOMAIN']}" q.modify :strip @@ -512,14 +512,9 @@ namespace :mastodon do desc 'Remove cached remote media attachments that are older than NUM_DAYS. By default 7 (week)' task remove_remote: :environment do - time_ago = ENV.fetch('NUM_DAYS') { 7 }.to_i.days.ago - nb_media_attachments = 0 - - MediaAttachment.where.not(remote_url: '').where.not(file_file_name: nil).where('created_at < ?', time_ago).select(:id).reorder(nil).find_in_batches do |media_attachments| - nb_media_attachments += media_attachments.length - Maintenance::UncacheMediaWorker.push_bulk(media_attachments.map(&:id)) - end - puts "Scheduled the deletion of #{nb_media_attachments} media attachments" + require_relative '../mastodon/media_cli' + cli = Mastodon::MediaCLI.new([], days: ENV['NUM_DAYS'] || 7) + cli.invoke(:remove) end desc 'Set unknown attachment type for remote-only attachments' |