lib/raven/context.rb in sentry-raven-2.0.2 vs lib/raven/context.rb in sentry-raven-2.1.0

- old
+ new

@@ -1,21 +1,42 @@ +require 'rbconfig' + module Raven class Context def self.current Thread.current[:sentry_context] ||= new end def self.clear! Thread.current[:sentry_context] = nil end - attr_reader :extra, :tags - attr_accessor :rack_env, :user + attr_accessor :extra, :os, :rack_env, :runtime, :tags, :user def initialize - @extra = {} - @tags = {} - @user = {} - @rack_env = nil + self.extra = {} + self.os = self.class.os_context + self.rack_env = nil + self.runtime = self.class.runtime_context + self.tags = {} + self.user = {} + end + + class << self + def os_context + @os_context ||= { + "name" => Raven.sys_command("uname -s") || RbConfig::CONFIG["host_os"], + "version" => Raven.sys_command("uname -v"), + "build" => Raven.sys_command("uname -r"), + "kernel_version" => Raven.sys_command("uname -a", "ver") + } + end + + def runtime_context + @runtime_context ||= { + "name" => RbConfig::CONFIG["ruby_install_name"], + "version" => Raven.sys_command("ruby -v") + } + end end end end