2017-12-07 1 views
0

Ich versuche, meine eigenen Exception für getaggten Protokollierung zu bauen:Rails - individuelle Ausnahmen (Fehler)

module Exceptions 
    class GeneralException < StandardError 
    LOGGER_NAME = 'Base' 

    def initialize(message) 
     @logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT)) 
     @logger.tagged(get_logger_name) { @logger.error message } 
     @message = message 
    end 

    def get_logger_name 
     self.class::LOGGER_NAME 
    end 
    end 

    class InvalidDataException < GeneralException; end 

    class SecurityException < GeneralException 
    LOGGER_NAME = 'Security' 
    end 

    class ElasticSearchException < GeneralException 
    LOGGER_NAME = 'Elastic' 
    end 
end 

Ich erwarte mit dieser neuen Ausnahme nennen zu können:

raise Exceptions::SecurityException "Something security related happened.

Das Problem ist, dass, wenn ich das nenne ich:

NoMethodError: undefined method 'SecurityException' for Exceptions:Module

Irgendeine Idee, wie man diesen Fehler richtig anhebt?

+1

Security ist keine Methode. Es ist eine Klasse. Sie müssen es zuerst instanziieren und die Nachricht weitergeben. – jemonsanto

Antwort

1

Nun, ganz einfach, müssen Sie die Instanz des Fehlers erhöhen:

raise Exceptions::SecurityException.new "Something security related happend." 

oder

raise Exceptions::SecurityException, "Something security related happend." 
Verwandte Themen