Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
j_utils / lib / j_utils / notification_agent.rb
Size: Mime:
module JUtils
  class NotificationAgent
    def initialize(type=:mailer)
      @type = type
    end

    def error(error, message=nil)
      message ||= caller[0] rescue "Unknown Caller"   # in certain (unlikely) situations, caller can return nil

      if message
        error = RuntimeError.new("#{message} - #{ error.message }")
        error.set_backtrace(error.backtrace)
      end

      deliver(error)
    end

    def info(message)
      message ||= caller[0] rescue "Unknown Caller"   # in certain (unlikely) situations, caller can return nil
      deliver(message)
    end

    private
      def deliver(error_or_message)
        case @type
        when :airbrake
          deliver_via_airbrake(error_or_message)
        when :mailer
          deliver_via_mailer(error_or_message.to_s)
        end
      end

      def deliver_via_airbrake(error_or_message)
        if Rails.env.development?
          deliver_via_mailer(error_or_message.to_s, false).deliver
        else
          error_or_message = RuntimeError.new(error_or_message) unless error_or_message.is_a?(Exception)
          Rails.logger.error(error_or_message)
        end
      end

      def deliver_via_mailer(message, delay=true)
        mailer = ActionMailer::Base
        mailer = mailer.delay if delay
        mailer.mail(to: 'devsupport@jugnoo.com', subject: "Platform issue requiring action on #{ENV['NEW_RELIC_APP_NAME']} - #{Rails.env.upcase}", body: message)
      end
  end
end