class ExceptionNotifier::IrcNotifier
Public Class Methods
Source
# File lib/exception_notifier/irc_notifier.rb, line 5 def initialize(options) super @config = OpenStruct.new parse_options(options) end
Calls superclass method
ExceptionNotifier::BaseNotifier::new
Public Instance Methods
Source
# File lib/exception_notifier/irc_notifier.rb, line 11 def call(exception, options = {}) errors_count = options[:accumulated_errors_count].to_i occurrences = "(#{errors_count} times)" if errors_count > 1 message = "#{occurrences}'#{exception.message}'" message += " on '#{exception.backtrace.first}'" if exception.backtrace return unless active? send_notice(exception, options, message) do |msg, _| send_message([*@config.prefix, *msg].join(" ")) end end
Source
# File lib/exception_notifier/irc_notifier.rb, line 25 def send_message(message) CarrierPigeon.send @config.irc.merge(message: message) end
Private Instance Methods
Source
# File lib/exception_notifier/irc_notifier.rb, line 48 def active? valid_uri? @config.irc[:uri] end
Source
# File lib/exception_notifier/irc_notifier.rb, line 31 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
Source
# File lib/exception_notifier/irc_notifier.rb, line 52 def valid_uri?(uri) URI.parse(uri) rescue URI::InvalidURIError false end