gem 'ostatus2', '~> 2.0'
gem 'ox', '~> 2.11'
gem 'parslet'
+gem 'parallel', '~> 1.17'
gem 'posix-spawn', git: 'https://github.com/rtomayko/posix-spawn', ref: '58465d2e213991f8afb13b984854a49fcdcc980c'
gem 'pundit', '~> 2.1'
gem 'premailer-rails'
module Mastodon
class SearchCLI < Thor
+ option :processes, default: 2, aliases: [:p]
desc 'deploy', 'Create or update an ElasticSearch index and populate it'
long_desc <<~LONG_DESC
If ElasticSearch is empty, this command will create the necessary indices
This command will also upgrade indices if the underlying schema has been
changed since the last run.
+
+ With the --processes option, parallelize execution of the command. The
+ default is 2. If "auto" is specified, the number is automatically
+ derived from available CPUs.
LONG_DESC
def deploy
- processed = Chewy::RakeHelper.upgrade
- Chewy::RakeHelper.sync(except: processed)
+ processed = Chewy::RakeHelper.upgrade(parallel: processes)
+ Chewy::RakeHelper.sync(except: processed, parallel: processes)
+ end
+
+ private
+
+ def processes
+ return true if options[:processes] == 'auto'
+
+ num = options[:processes].to_i
+
+ if num < 2
+ nil
+ else
+ num
+ end
end
end
end