Class: Upkeep::Runtime::Current

Inherits:
Object
  • Object
show all
Defined in:
lib/upkeep/runtime.rb

Constant Summary collapse

THREAD_KEY =
:upkeep_current_user

Class Method Summary collapse

Class Method Details

.set(user:) ⇒ Object



809
810
811
812
813
814
815
# File 'lib/upkeep/runtime.rb', line 809

def set(user:)
  previous = Thread.current[THREAD_KEY]
  Thread.current[THREAD_KEY] = user
  yield
ensure
  Thread.current[THREAD_KEY] = previous
end

.userObject



817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
# File 'lib/upkeep/runtime.rb', line 817

def user
  user = Thread.current[THREAD_KEY]
  return user unless Observation.recording?

  dependency = Dependencies::Identity.new(
    source: "Current.user",
    key: "id",
    value: user&.id,
    metadata: {
      model: user&.class&.name,
      table: user&.class&.table_name,
      id: user&.id
    }.compact
  )

  Observation.record_dependency(dependency)
  user
end