Console::Event::Spawn (original) (raw)
Represents a child process spawn event.
Definitions
def self.for(*arguments, **options)
Create a new spawn event.
Signature
parameter arguments
Array
The arguments to the command, similar to how you would pass them to Kernel.system
or Process.spawn
.
parameter options
Hash
The options to pass to the command, similar to how you would pass them to Kernel.system
or Process.spawn
.
returns [Spawn](index.html "Console::Event::Spawn")
The new spawn event representing the command.
Implementation
def self.for(*arguments, **options)
# Extract out the command environment:
if arguments.first.is_a?(Hash)
environment = arguments.shift
self.new(environment, arguments, options)
else
self.new(nil, arguments, options)
end
end
def initialize(environment, arguments, options)
Create a new spawn event.
Signature
parameter environment
Hash
The environment to use when running the command.
parameter arguments
Array
The arguments used for command execution.
parameter options
Hash
The options to pass to the command, similar to how you would pass them to Kernel.system
or Process.spawn
.
Implementation
def initialize(environment, arguments, options)
@environment = environment
@arguments = arguments
@options = options
@start_time = Clock.now
@end_time = nil
@status = nil
end
attr :start_time
Signature
attribute Numeric
The start time of the command.
attr :end_time
Signature
attribute Numeric
The end time of the command.
attr :status
Signature
attribute Process::Status
The status of the command, if it has completed.
def status=(status)
Set the status of the command, and record the end time.
Signature
parameter status
Process::Status
The status of the command.
Implementation
def status=(status)
@end_time = Time.now
@status = status
end
def duration
Calculate the duration of the command, if it has completed.
Signature
returns Numeric
The duration of the command.
Implementation
def duration
if @end_time
@end_time - @start_time
end
end
def to_hash
Convert the spawn event to a hash suitable for JSON serialization.
Signature
returns Hash
The hash representation of the spawn event.
Implementation
def to_hash
Hash.new.tap do |hash|
hash[:type] = :spawn
hash[:environment] = @environment if @environment&.any?
hash[:arguments] = @arguments if @arguments&.any?
hash[:options] = @options if @options&.any?
hash[:status] = @status.to_i if @status
if duration = self.duration
hash[:duration] = duration
end
end
end
def emit(*arguments, **options)
Log the spawn event.
Signature
parameter arguments
Array
The arguments to log.
parameter options
Hash
Additional options to pass to the logger output.
Implementation
def emit(*arguments, **options)
options[:severity] ||= :info
super
end