Class: Lapsoss::RuntimeContext

Inherits:
Data
  • Object
show all
Defined in:
lib/lapsoss/runtime_context.rb

Overview

Boot-time context collection using Data class

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#modulesObject (readonly)

Returns the value of attribute modules



8
9
10
# File 'lib/lapsoss/runtime_context.rb', line 8

def modules
  @modules
end

#osObject (readonly)

Returns the value of attribute os



8
9
10
# File 'lib/lapsoss/runtime_context.rb', line 8

def os
  @os
end

#releaseObject (readonly)

Returns the value of attribute release



8
9
10
# File 'lib/lapsoss/runtime_context.rb', line 8

def release
  @release
end

#runtimeObject (readonly)

Returns the value of attribute runtime



8
9
10
# File 'lib/lapsoss/runtime_context.rb', line 8

def runtime
  @runtime
end

#server_nameObject (readonly)

Returns the value of attribute server_name



8
9
10
# File 'lib/lapsoss/runtime_context.rb', line 8

def server_name
  @server_name
end

Class Method Details

.collect_modulesObject



38
39
40
41
42
43
44
45
46
# File 'lib/lapsoss/runtime_context.rb', line 38

def self.collect_modules
  return {} unless defined?(Bundler)

  Bundler.load.specs.each_with_object({}) do |spec, h|
    h[spec.name] = spec.version.to_s
  end
rescue
  {}
end

.collect_os_contextObject



19
20
21
22
23
24
25
26
27
28
29
# File 'lib/lapsoss/runtime_context.rb', line 19

def self.collect_os_context
  {
    name: RbConfig::CONFIG["host_os"],
    version: `uname -r 2>/dev/null`.strip.presence,
    build: `uname -v 2>/dev/null`.strip.presence,
    kernel_version: `uname -a 2>/dev/null`.strip.presence,
    machine: RbConfig::CONFIG["host_cpu"]
  }.compact
rescue
  { name: RbConfig::CONFIG["host_os"] }
end

.collect_releaseObject



54
55
56
57
58
59
60
61
# File 'lib/lapsoss/runtime_context.rb', line 54

def self.collect_release
  # Try to get from git if available
  if File.exist?(".git")
    `git rev-parse HEAD 2>/dev/null`.strip.presence
  end
rescue
  nil
end

.collect_runtime_contextObject



31
32
33
34
35
36
# File 'lib/lapsoss/runtime_context.rb', line 31

def self.collect_runtime_context
  {
    name: "ruby",
    version: RUBY_DESCRIPTION
  }
end

.collect_server_nameObject



48
49
50
51
52
# File 'lib/lapsoss/runtime_context.rb', line 48

def self.collect_server_name
  Socket.gethostname
rescue
  "unknown"
end

.currentObject



9
10
11
12
13
14
15
16
17
# File 'lib/lapsoss/runtime_context.rb', line 9

def self.current
  @current ||= new(
    os: collect_os_context,
    runtime: collect_runtime_context,
    modules: collect_modules,
    server_name: collect_server_name,
    release: collect_release
  )
end

Instance Method Details

#to_contextsObject



63
64
65
66
67
68
# File 'lib/lapsoss/runtime_context.rb', line 63

def to_contexts
  {
    os: os,
    runtime: runtime
  }
end