Question

De la Guide Rails sur le débogage, je trouve que je peux personnaliser mes fichiers de sortie à journaux en utilisant cette méthode simple:

logger.debug "Person attributes hash: #{@person.attributes.inspect}"

J'ai décidé de suivre cette utilisation comment une variable change et passe par le contrôle de flux.

Je voudrais être en mesure de voir le numéro de ligne de mon code où la méthode de logger#debug a été appelé. Quelque chose comme ceci:

logger.debug "Person attributes hash: #{@person.attributes.inspect} from line #{LINE_NUMBER_VAR}"
Était-ce utile?

La solution

logger.debug "Person attributes hash: #{@person.attributes.inspect} from line #{__LINE__}"

Autres conseils

Utilisez un décorateur sur Logger:

class LoggerDecorator
  def initialize(logger)
    @logger = logger
  end

  %w{debug info warn error fatal}.each do |method|
    eval(<<-eomethod)
      def #{method}(msg)
        @logger.#{method}(position) {msg}
      end
    eomethod
  end

  private
  def position
    caller.at(1).sub(%r{.*/},'').sub(%r{:in\s.*},'')
  end
end

Rails 5, ceci est maintenant cuit via:

ActiveRecord::Base.verbose_query_logs = true

Voir la documentation pour plus

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top