Backend: Refactor Rules::Rule::Clause classes to avoid needing to pass down `context`
Summary
The following discussion from !148356 (merged) should be addressed:
-
@lma-git started a discussion: (+1 comment) I think these clause classes should be refactored so that they don't require passing down
contexteverywhere (perhaps a follow-up issue?). But for now, I've continued with this pattern so that the code changes are as minimal as possible. Wdyt?
Proposal
Refactor Gitlab::Ci::Build::Rules::Rule::Clause classes so that instead of passing the context into satisfied_by?, we pass it into the initializer and set attr_reader: :context. This allows us to avoid passing down context into every downstream method.
Note: For Rules::Rule::Clause::Exists, instead of setting attr_reader: :context, we should define a def context private method because the context is modified at this line. def context should return either the original or modified context depending on whether @project_path is present, and it should be memoized.