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?

War es hilfreich?

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) %>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top