Class: SimpleSpeaker::Speaker

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

Instance Method Summary collapse

Constructor Details

#initialize(logger_path = nil, logger_error_path = nil) ⇒ Speaker

Returns a new instance of Speaker.



5
6
7
8
9
10
# File 'lib/simple_speaker.rb', line 5

def initialize(logger_path = nil, logger_error_path = nil)
  @logger = Logger.new(logger_path) unless logger_path.nil?
  @logger_error = Logger.new(logger_error_path) unless logger_error_path.nil?
  @daemons = []
  @user_input = nil
end

Instance Method Details

#ask_if_needed(question, no_prompt = 0, default = 'y') ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/simple_speaker.rb', line 12

def ask_if_needed(question, no_prompt = 0, default = 'y')
  ask_if_needed = default
  if no_prompt.to_i == 0
    self.speak_up(question, 0)
    if Daemon.is_daemon?
      wtime = 0
      while @user_input.nil?
        sleep 1
        ask_if_needed = @user_input
        break if (wtime += 1) > USER_INPUT_TIMEOUT
      end
      @user_input = nil
    else
      ask_if_needed = STDIN.gets.strip
    end
  end
  ask_if_needed
end

#daemon(daemon_server = nil) ⇒ Object



31
32
33
# File 'lib/simple_speaker.rb', line 31

def daemon(daemon_server = nil)
  @daemons << daemon_server if daemon_server
end

#log(str) ⇒ Object



50
51
52
# File 'lib/simple_speaker.rb', line 50

def log(str)
  @logger.info(str) if @logger
end

#send_to_all(str) ⇒ Object



46
47
48
# File 'lib/simple_speaker.rb', line 46

def send_to_all(str)
  @daemons.each { |d| d.send_data "#{str}\n" }
end

#speak_up(str, in_mail = 1) ⇒ Object



35
36
37
38
39
40
41
42
43
44
# File 'lib/simple_speaker.rb', line 35

def speak_up(str, in_mail = 1)
  puts str
  send_to_all(str)
  @logger.info(str) if @logger
  Thread.current[:email_msg] += str + NEW_LINE if Thread.current[:email_msg]
  if in_mail.to_i > 0
    Thread.current[:send_email] = in_mail.to_i if Thread.current[:send_email]
  end
  str
end

#tell_error(e, src, in_mail = 1) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/simple_speaker.rb', line 54

def tell_error(e, src, in_mail = 1)
  puts "In #{src}"
  send_to_all(src)
  puts e
  send_to_all(e)
  @logger_error.error("ERROR #{Time.now.utc.to_s} #{src}") if @logger_error
  @logger_error.error(e) if @logger_error
  Thread.current[:email_msg] += "ERROR #{Time.now.utc.to_s} #{src}" + NEW_LINE if Thread.current[:email_msg]
  Thread.current[:email_msg] += e.to_s + NEW_LINE if Thread.current[:email_msg]
  if in_mail.to_i > 0
    Thread.current[:send_email] = in_mail.to_i if Thread.current[:send_email]
  end
end

#user_input(input) ⇒ Object



68
69
70
# File 'lib/simple_speaker.rb', line 68

def user_input(input)
  @user_input = input
end