Class: SolidObjects::CLI
- Defined in:
- lib/solid_objects/cli.rb,
sig/generated/lib/solid_objects/cli.rbs
Instance Method Summary collapse
- #authorize_administration!(action) ⇒ void
- #boot_application ⇒ void
- #cleanup ⇒ void
- #dead_letters ⇒ void
- #numeric_option(name, default) ⇒ Integer
- #retry_dead_letter(id) ⇒ void
- #start ⇒ void
- #status ⇒ void
Instance Method Details
#authorize_administration!(action) ⇒ void
This method returns an undefined value.
106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/solid_objects/cli.rb', line 106 def (action) = SolidObjects.configuration..call( action:, resource: "processes", resource_id: nil, authorization_context: { source: "cli" } ) return if raise Unauthorized, "actor administration is not authorized" end |
#boot_application ⇒ void
This method returns an undefined value.
89 90 91 92 93 94 95 96 97 |
# File 'lib/solid_objects/cli.rb', line 89 def boot_application path = [:environment] || File.("config/environment.rb", Dir.pwd) unless File.file?(path) raise Error, "Rails environment not found at #{path}" end require path end |
#cleanup ⇒ void
This method returns an undefined value.
55 56 57 58 59 |
# File 'lib/solid_objects/cli.rb', line 55 def cleanup boot_application (:cleanup) puts JSON.generate(cleaned_processes: ProcessRegistry.cleanup_dead) end |
#dead_letters ⇒ void
This method returns an undefined value.
65 66 67 68 69 70 71 |
# File 'lib/solid_objects/cli.rb', line 65 def dead_letters boot_application rows = SolidObjects.dead_letters .all(authorization_context: { source: "cli" }) .map(&:attributes) puts JSON.pretty_generate(rows) end |
#numeric_option(name, default) ⇒ Integer
100 101 102 103 |
# File 'lib/solid_objects/cli.rb', line 100 def numeric_option(name, default) value = [name] value ? Integer(value) : default end |
#retry_dead_letter(id) ⇒ void
This method returns an undefined value.
77 78 79 80 81 82 83 84 |
# File 'lib/solid_objects/cli.rb', line 77 def retry_dead_letter(id) boot_application = SolidObjects.dead_letters.retry( Integer(id), authorization_context: { source: "cli" } ) puts JSON.generate(message_id: .id) end |
#start ⇒ void
This method returns an undefined value.
17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/solid_objects/cli.rb', line 17 def start boot_application supervisor = Supervisor.new( worker_count: numeric_option(:workers, SolidObjects.configuration.worker_count), effect_worker_count: numeric_option(:effect_workers, SolidObjects.configuration.effect_worker_count), broadcast_worker_count: numeric_option(:broadcast_workers, SolidObjects.configuration.broadcast_worker_count), reminder_scheduler_count: numeric_option(:reminder_schedulers, SolidObjects.configuration.reminder_scheduler_count) ) %w[INT TERM].each do |signal| Signal.trap(signal) { Thread.new { supervisor.stop } } end supervisor.run end |
#status ⇒ void
This method returns an undefined value.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/solid_objects/cli.rb', line 35 def status boot_application (:status) rows = SolidObjects::Process.order(:kind, :started_at).map do |process_record| { id: process_record.id, kind: process_record.kind, hostname: process_record.hostname, pid: process_record.pid, state: process_record.shutdown_state, last_heartbeat_at: process_record.last_heartbeat_at } end puts JSON.pretty_generate(rows) end |