module StateInspector::Observers::SessionLoggerObserver

Public Class Methods

display() click to toggle source
# File lib/state_inspector/observers/session_logger_observer.rb, line 30
def display
  if @file
    File.open(@file, File::RDONLY) {|f| f.read }
  else
    ""
  end
end
file=(f) click to toggle source
# File lib/state_inspector/observers/session_logger_observer.rb, line 25
def file= f
  warn("Warning! Log file #{@file} was already set!") if @file
  @file = f
end
purge() click to toggle source
# File lib/state_inspector/observers/session_logger_observer.rb, line 52
def purge
  File.delete(@file) if File.exist? @file
  @file = nil
end
update(*values) click to toggle source
# File lib/state_inspector/observers/session_logger_observer.rb, line 10
def update *values
  @file ||= File.join(
      'log', 'state_inspector',
      ['session', Time.now.to_i, 'log'].join('.')
    )
  FileUtils.mkdir_p File.dirname(@file)
  File.open(@file, File::WRONLY | File::APPEND | File::CREAT) do |file|
    logger = Logger.new(file)
    logger << values.
      map(&value_mapper).
      join(splitter) 
    logger << "\n"
  end
end
values() click to toggle source
# File lib/state_inspector/observers/session_logger_observer.rb, line 38
def values
  if @file
    File.open(@file, File::RDONLY) {|f| f.readlines}.map(&:chomp).map do |line|
      if line.empty?
        nil
      else
        line.split(splitter).map(&value_mapper)
      end
    end.compact
  else
    []
  end
end

Private Class Methods

splitter() click to toggle source
# File lib/state_inspector/observers/session_logger_observer.rb, line 58
def splitter
  "\t\t"
end
value_mapper() click to toggle source
# File lib/state_inspector/observers/session_logger_observer.rb, line 62
def value_mapper
  ->v{
    case v
    when nil
      "nil"
    when "nil"
      nil
    when Symbol
      v.inspect
    when ->val{ val.is_a?(String) && val =~ /\A:/ }
      v[1..-1].to_sym
    else
      v
    end
  }
end