lib/timber/contexts/system.rb in timber-2.5.1 vs lib/timber/contexts/system.rb in timber-2.6.0.pre.beta1

- old
+ new

@@ -6,21 +6,31 @@ # The system context tracks OS level process information, such as the process ID. # # @note This is tracked automatically in {CurrentContext}. When the current context # is initialized, the system context gets added automatically. class System < Context + HOSTNAME_MAX_BYTES = 256.freeze + @keyspace = :system attr_reader :hostname, :pid def initialize(attributes) - @hostname = attributes[:hostname] - @pid = Timber::Util::Object.try(attributes[:pid], :to_i) + normalizer = Util::AttributeNormalizer.new(attributes) + @hostname = normalizer.fetch(:hostname, :string, :limit => HOSTNAME_MAX_BYTES) + @pid = normalizer.fetch(:pid, :integer) end # Builds a hash representation containing simple objects, suitable for serialization (JSON). + def to_hash + @to_hash ||= Util::NonNilHashBuilder.build do |h| + h.add(:hostname, hostname) + h.add(:pid, pid) + end + end + def as_json(_options = {}) - {hostname: hostname, pid: pid} + to_hash end end end end \ No newline at end of file