Class: Boppers::Runner

Inherits:
Object
  • Object
show all
Defined in:
lib/boppers/runner.rb

Instance Method Summary collapse

Constructor Details

#initializeRunner

Returns a new instance of Runner.



5
6
7
# File 'lib/boppers/runner.rb', line 5

def initialize
  @stop = false
end

Instance Method Details

#boppersObject



17
18
19
# File 'lib/boppers/runner.rb', line 17

def boppers
  Boppers.configuration.boppers
end

#callObject



56
57
58
59
60
61
62
63
64
# File 'lib/boppers/runner.rb', line 56

def call
  trap("SIGINT") { stop! }

  threads = boppers.each_with_object([]) do |bopper, buffer|
    buffer << run_bopper(bopper)
  end

  threads.each(&:join)
end

#default_intervalObject



21
22
23
# File 'lib/boppers/runner.rb', line 21

def default_interval
  60
end

#run_bopper(bopper) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/boppers/runner.rb', line 25

def run_bopper(bopper)
  interval = if bopper.respond_to?(:interval)
               bopper.interval
             else
               default_interval
             end

  interval = interval.to_i
  interval = default_interval if interval.zero?

  Thread.new do
    elapsed_time = 0

    loop do
      break if stop?

      begin
        bopper.call if elapsed_time.zero?
      rescue StandardError => error
        Boppers.configuration.handle_exception&.call(error)
      end

      elapsed_time += 1

      sleep 1

      elapsed_time = 0 if elapsed_time == interval
    end
  end
end

#stop!Object



13
14
15
# File 'lib/boppers/runner.rb', line 13

def stop!
  @stop = true
end

#stop?Boolean

Returns:

  • (Boolean)


9
10
11
# File 'lib/boppers/runner.rb', line 9

def stop?
  @stop
end