Wie kann Debug-Meldungen in erb im Produktionsmodus unterdrückt werden
-
21-09-2019 - |
Frage
Ich mag einige Debug-Meldungen in meiner erb Vorlage drucken, wenn es im Entwicklungsmodus genannt wird, aber nicht, wenn es im Produktionsmodus genannt (d.)
<%= debug variable_name %>
Dies wird jedoch in einem beliebigen Modus gedruckt werden.
Ich fand ich tun kann,
<% if logger.debug?
debug variable_name
end %>
, die zu funktionieren scheint. Ist dies der richtige Weg, oder gibt es eine elegantere Lösung?
Lösung
Sie möchten wahrscheinlich so etwas wie dies tun:
<%= debug(variable) if RAILS_ENV == 'development' %>
Wenn Sie dies oft tun, könnten Sie eine schnelle Hilfsmethode erstellen möchten den Code ein wenig mehr aufzuräumen:
def my_debug(debug_variable)
debug_variable if RAILS_ENV == 'development'
end
Dann können Sie tun dies in Ihrem erb Template / view
my_debug(variable_here)
Andere Tipps
ich nach einem besseren Weg umsehen würde aber jetzt, dass ein Motto sein könnte:
<%= debug(variable) if logger.debug? %>
Edit:. Wenn Sie diese Art von Code haben werden überall vielleicht ein Helfer würde den Trick
def fancy_debuggin(f)
debug(f) if logger.debug?
end
<%= fancy_debuggin(variable) %>
Sie brauchen nicht auf die logger.debug anrufen? Funktion zu testen, ob die Protokollierung auf Dir eingeschaltet wird einen direkten Aufruf zu logger.debug platzieren kann.
Es ist eine Performance-Einbußen, in der Regel ziemlich marginal, mit diesem Ansatz, wie Sie die Zeichenfolge an die logger.debug Methode übergeben zu bewerten, auch wenn der Logger nicht auf Debug-Ebene ist. Dies ist nur ein Problem, wenn Sie eine relativ teure Zeichenfolge haben.
So Ihr Code wie folgt aussehen würde
<%= logger.debug(variable) %>