File: plugin.rb

package info (click to toggle)
ruby-eye 0.7-5.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 672 kB
  • sloc: ruby: 5,003; makefile: 3
file content (63 lines) | stat: -rw-r--r-- 1,294 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
55
56
57
58
59
60
61
62
63
class Reactor
  include Celluloid

  def initialize(interval, filename)
    @interval = interval
    @filename = filename
    every(@interval) do
      info "check file #{@filename}"
      if cmd = read_file
        execute_command cmd
      end
    end
  end

  def read_file
    if File.exist?(@filename)
      cmd = File.read(@filename).chop
      File.delete(@filename) rescue nil
      cmd
    end
  end

  def execute_command(cmd)
    Eye::Control.command(cmd, 'all') if %w{restart start stop}.include?(cmd)
  end
end

class Saver < Eye::Trigger::Custom
  param :log_name, String, true

  def check(trans)
    tlogger.info "#{process.full_name} transition from #{trans.from_name} to #{trans.to_name}"
  end

  def tlogger
    @tlogger ||= Logger.new(log_name)
  end
end

def reactor
  Celluloid::Actor[:reactor]
end

# Extend config options, add enable_reactor
class Eye::Dsl::ConfigOpts
  def enable_reactor(*args)
    @config[:reactor] = args
  end

  def enable_saver(save_log)
    Eye.application '__default__' do
      trigger :saver, :log_name => save_log
    end
  end
end

# extend controller to execute method, and config loads
class Eye::Controller
  def set_opt_reactor(args)
    reactor.terminate if reactor
    Celluloid::Actor[:reactor] = Reactor.supervise(*args)
  end
end