class ExceptionNotifier::IrcNotifier
Public Class Methods
new(options)
click to toggle source
# File lib/exception_notifier/irc_notifier.rb, line 3 def initialize(options) @config = OpenStruct.new parse_options(options) end
Public Instance Methods
call(exception, options={})
click to toggle source
# File lib/exception_notifier/irc_notifier.rb, line 8 def call(exception, options={}) message = "'#{exception.message}' on '#{exception.backtrace.first}'" send_message([*@config.prefix, *message].join(' ')) if active? end
send_message(message)
click to toggle source
# File lib/exception_notifier/irc_notifier.rb, line 13 def send_message(message) CarrierPigeon.send @config.irc.merge({message: message}) end
Private Instance Methods
active?()
click to toggle source
# File lib/exception_notifier/irc_notifier.rb, line 35 def active? valid_uri? @config.irc[:uri] end
parse_options(options)
click to toggle source
# File lib/exception_notifier/irc_notifier.rb, line 18 def parse_options(options) nick = options.fetch(:nick, 'ExceptionNotifierBot') password = options[:password] ? ":#{options[:password]}" : nil domain = options.fetch(:domain, nil) port = options[:port] ? ":#{options[:port]}" : nil channel = options.fetch(:channel, '#log') notice = options.fetch(:notice, false) ssl = options.fetch(:ssl, false) join = options.fetch(:join, false) uri = "irc://#{nick}#{password}@#{domain}#{port}/#{channel}" prefix = options.fetch(:prefix, nil) recipients = options[:recipients] ? options[:recipients].join(', ') + ':' : nil @config.prefix = [*prefix, *recipients].join(' ') @config.irc = { uri: uri, ssl: ssl, notice: notice, join: join } end
valid_uri?(uri)
click to toggle source
# File lib/exception_notifier/irc_notifier.rb, line 39 def valid_uri?(uri) !!URI.parse(uri) rescue URI::InvalidURIError false end