Class: Judges::Update
Overview
The update command.
This class is instantiated by the bin/judges command line interface. You are not supposed to instantiate it yourself.
- Author
-
Yegor Bugayenko (yegor256@gmail.com)
- Copyright
-
Copyright © 2024-2026 Yegor Bugayenko
- License
-
MIT
Instance Method Summary collapse
-
#initialize(loog) ⇒ Update
constructor
Initialize.
-
#run(opts, args) ⇒ Object
Run the update command (called by the
bin/judgesscript).
Constructor Details
#initialize(loog) ⇒ Update
Initialize.
33 34 35 36 |
# File 'lib/judges/commands/update.rb', line 33 def initialize(loog) @loog = loog @start = Time.now end |
Instance Method Details
#run(opts, args) ⇒ Object
Run the update command (called by the bin/judges script).
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/judges/commands/update.rb', line 42 def run(opts, args) raise(ArgumentError, 'Exactly two arguments required') unless args.size == 2 dir = args[0] raise(StandardError, "The directory is absent: #{dir.to_rel}") unless File.exist?(dir) impex = Judges::Impex.new(@loog, args[1]) fb = impex.import(strict: false) fb = Factbase::Logged.new(fb, @loog) if opts['log'] = (opts) judges = Judges::Judges.new( dir, opts['lib'], @loog, epoch: @epoch, shuffle: opts['shuffle'], boost: opts['boost'], demote: opts['demote'], seed: opts['seed'] ) churn = Factbase::Churn.new begin Timeout.timeout(opts['lifetime']) do loop_them(judges, fb, churn, opts, ) end rescue Timeout::Error, Timeout::ExitException => e @loog.error("Terminated due to --lifetime=#{opts['lifetime']}") raise(e) unless opts['quiet'] @loog.info("Had to stop due to the --lifetime=#{opts['lifetime']}") ensure impex.export(fb) if opts['churn'] && churn File.write(opts['churn'], churn.to_s) @loog.info("Churn written to #{opts['churn']}: #{churn}") end end end |