class Dotenv::LogSubscriber
Dotenv.instrumenter = ActiveSupport::Notifications
require “dotenv/log_subscriber”
require “active_support/notifications”
Usage:
Logs instrumented events
def color_env_constant
def color_env_constant color("ENV", :GREEN) end
def color_filename(filename)
def color_filename(filename) color(Pathname.new(filename).relative_path_from(Dotenv::Rails.root.to_s).to_s, :YELLOW) end
def color_var(name)
def color_var(name) color(name, :CYAN) end
def load(event)
def load(event) env = event.payload[:env] info "Loaded #{color_filename(env.filename)}" end
def logger
def logger Dotenv::Rails.logger end
def restore(event)
def restore(event) diff = event.payload[:diff] removed = diff.removed.keys.map { |key| color(key, :RED) } restored = (diff.changed.keys + diff.added.keys).map { |key| color_var(key) } if removed.any? || restored.any? info "Restored snapshot of #{color_env_constant}" debug "Unset #{removed.to_sentence}" if removed.any? debug "Restored #{restored.to_sentence}" if restored.any? end end
def save(event)
def save(event) info "Saved a snapshot of #{color_env_constant}" end
def update(event)
def update(event) diff = event.payload[:diff] changed = diff.env.keys.map { |key| color_var(key) } debug "Set #{changed.to_sentence}" if diff.any? end