Class: SelectRailsLog::Runner

Inherits:
Extension show all
Includes:
Constants
Defined in:
lib/select_rails_log/runner.rb

Constant Summary

Constants included from Constants

Constants::ACTION, Constants::CLIENT, Constants::COMPLETED, Constants::CONTROLLER, Constants::DEBUG, Constants::DEFAULT_OUTPUT, Constants::DURATION, Constants::HTTP_METHOD, Constants::HTTP_STATUS, Constants::ID, Constants::INTERVAL, Constants::LOGS, Constants::MESSAGE, Constants::PARAMETERS, Constants::PATH, Constants::PERFORMANCE, Constants::PERFORMANCE_ACTIVE_RECORD, Constants::PERFORMANCE_ALLOCATIONS, Constants::PERFORMANCE_VIEWS, Constants::PID, Constants::RAW_LOGS, Constants::REQUEST_ID, Constants::SEVERITY, Constants::STARTED, Constants::TIME

Instance Attribute Summary

Attributes inherited from Extension

#options

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Extension

option_initializers

Constructor Details

#initialize(options, standard_output) ⇒ Runner

Returns a new instance of Runner.



61
62
63
64
65
# File 'lib/select_rails_log/runner.rb', line 61

def initialize(options, standard_output)
  super(options)
  @count = 0
  @standard_output = standard_output
end

Class Method Details

.run(argv, argf, out = $stdout) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/select_rails_log/runner.rb', line 17

def run(argv, argf, out = $stdout)
  runner = setup_runner(argv, out)

  begin
    runner.run(Scanner.new(argf)) if runner.runnable?
  rescue StopIteration, Errno::EPIPE, Interrupt
    # noop
  end

  runner.success?
rescue StandardError => e
  raise e if runner&.debug?

  warn e.message
  false
end

Instance Method Details

#debug? ⇒ Boolean

Returns:

  • (Boolean)


75
76
77
# File 'lib/select_rails_log/runner.rb', line 75

def debug?
  options[:debug]
end

#help? ⇒ Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/select_rails_log/runner.rb', line 67

def help?
  options[:help]
end

#run(scanner) ⇒ Object



87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/select_rails_log/runner.rb', line 87

def run(scanner)
  selector, printers = setup
  counter_thread = counter_thread() if output_tty?(printers)

  keep_raw = include_raw_printer?(printers)
  scanner.select(selector, keep_raw:) do |data|
    @count += 1
    printers.each { _1.print(data) }
  end
ensure
  counter_thread&.kill
  printers&.each(&:close)
end

#runnable? ⇒ Boolean

Returns:

  • (Boolean)


83
84
85
# File 'lib/select_rails_log/runner.rb', line 83

def runnable?
  !help? && !version?
end

#success? ⇒ Boolean

Returns:

  • (Boolean)


79
80
81
# File 'lib/select_rails_log/runner.rb', line 79

def success?
  help? || version? || @count.positive?
end

#version? ⇒ Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/select_rails_log/runner.rb', line 71

def version?
  options[:version]
end