Files
gitlab-foss/lib/gitlab/ip_address_state.rb
2024-06-10 15:21:23 +00:00

37 lines
656 B
Ruby

# frozen_string_literal: true
# rubocop: disable Gitlab/NamespacedClass -- General utility
module Gitlab
class IpAddressState
THREAD_KEY = :current_ip_address
class << self
def with(address)
set_address(address)
yield
ensure
nullify_address
end
def set_address(address)
self.current = address
end
def nullify_address
self.current = nil
end
def current
Thread.current[THREAD_KEY]
end
protected
def current=(value)
Thread.current[THREAD_KEY] = value
end
end
end
end
# rubocop: enable Gitlab/NamespacedClass