Module: Banzai::CrossProjectReference

Included in:
Filter::References::AbstractReferenceFilter
Defined in:
lib/banzai/cross_project_reference.rb

Overview

Common methods for ReferenceFilters that support an optional cross-project reference.

Instance Method Summary collapse

Instance Method Details

#parent_from_ref(ref) ⇒ Object

Given a cross-project reference string, get the Project record

Defaults to value of ‘context`, or `context` if:

  • No reference is given OR

  • Reference given doesn’t exist

ref - String reference.

Returns a Project, or nil if the reference can’t be found



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/banzai/cross_project_reference.rb', line 16

def parent_from_ref(ref)
  return context[:project] || context[:group] unless ref
  return context[:project] if context[:project]&.full_path == ref

  if reference_cache.cache_loaded?
    # optimization to reuse the parent_per_reference query information
    reference_cache.parent_per_reference[ref || reference_cache.current_parent_path]
  else
    Project.find_by_full_path(ref)
  end
end