Class: SolidObjects::CLI
- Defined in:
- lib/solid_objects/cli.rb,
sig/generated/lib/solid_objects/cli.rbs
Instance Method Summary collapse
- #authorize_administration!(action, resource:) ⇒ void
- #boot_application ⇒ void
- #cleanup ⇒ void
- #dead_letters ⇒ void
- #numeric_option(name, default) ⇒ Integer
- #prune_instances ⇒ void
- #prune_messages ⇒ void
- #prune_processes ⇒ void
- #retry_dead_letter(id) ⇒ void
- #start ⇒ void
- #status ⇒ void
Instance Method Details
#authorize_administration!(action, resource:) ⇒ void
This method returns an undefined value.
147 148 149 150 151 152 153 154 155 156 157 |
# File 'lib/solid_objects/cli.rb', line 147 def (action, resource:) = SolidObjects.configuration..call( action:, resource:, 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.
129 130 131 132 133 134 135 136 137 138 |
# File 'lib/solid_objects/cli.rb', line 129 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 ApplicationActorLoader.new.install end |
#cleanup ⇒ void
This method returns an undefined value.
56 57 58 59 60 |
# File 'lib/solid_objects/cli.rb', line 56 def cleanup boot_application (:cleanup, resource: "processes") puts JSON.generate(cleaned_processes: ProcessRegistry.cleanup_dead) end |
#dead_letters ⇒ void
This method returns an undefined value.
105 106 107 108 109 110 111 |
# File 'lib/solid_objects/cli.rb', line 105 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
141 142 143 144 |
# File 'lib/solid_objects/cli.rb', line 141 def numeric_option(name, default) value = [name] value ? Integer(value) : default end |
#prune_instances ⇒ void
This method returns an undefined value.
80 81 82 83 84 85 86 |
# File 'lib/solid_objects/cli.rb', line 80 def prune_instances boot_application (:prune, resource: "instances") pruner = InstancePruner.new count = [:execute] ? pruner.prune : pruner.preview puts JSON.generate(mode: [:execute] ? "execute" : "preview", instances: count) end |
#prune_messages ⇒ void
This method returns an undefined value.
67 68 69 70 71 72 73 |
# File 'lib/solid_objects/cli.rb', line 67 def boot_application (:prune, resource: "messages") pruner = MessagePruner.new count = [:execute] ? pruner.prune : pruner.preview puts JSON.generate(mode: [:execute] ? "execute" : "preview", messages: count) end |
#prune_processes ⇒ void
This method returns an undefined value.
93 94 95 96 97 98 99 |
# File 'lib/solid_objects/cli.rb', line 93 def prune_processes boot_application (:prune, resource: "processes") pruner = ProcessPruner.new count = [:execute] ? pruner.prune : pruner.preview puts JSON.generate(mode: [:execute] ? "execute" : "preview", processes: count) end |
#retry_dead_letter(id) ⇒ void
This method returns an undefined value.
117 118 119 120 121 122 123 124 |
# File 'lib/solid_objects/cli.rb', line 117 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.
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/solid_objects/cli.rb', line 18 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.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/solid_objects/cli.rb', line 36 def status boot_application (:status, resource: "processes") 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 |