Open reubenmoes opened 2 years ago
here's an example of how to extend it to use in a non-acquia environment: https://github.com/mikemadison13/blt-gitlab-pipelines/blob/main/src/Blt/Plugin/EnvironmentDetector/GitlabDetector.php#L7
In this case, I'm adding a detection for Gitlab (which is non-Acquia).
Though there is something amiss with the environment detector.
public static function isLocalEnv() {
$results = self::getSubclassResults(__FUNCTION__);
if ($results) {
print ' says it is local from results being true ';
return TRUE;
}
return parent::isLocalEnv() && !self::isPantheonEnv() && !self::isCiEnv();
}
(I added some debugging code above). The "results" are false, so it doesn't not return true. It then continues on to the last line
return parent::isLocalEnv() && !self::isPantheonEnv() && !self::isCiEnv();
which then evaluates to true. So there is really no way for a custom environment detector to say that it is "not" local.
I have been meaning to report this as a bug.
@mikemadison13 With your example, I still think the EnvironmentDetector would return true for isLocalEnv().
@shelane that's exactly it! **So there is really no way for a custom environment detector to say that it is "not" local.
**
In the meantime, this patch completely disables the OOTB environment detection. Not suggesting this gets committed. Only a temporary workaround to force handoff to custom environment detectors.
I want to... I want to use BLT with a custom environment detector when hosting in non-acquia environments. Some of our clients are hosted on acquia, and others are not, but we like to use BLT for consistency in tooling. After BLT 11, the documented method seems to no longer work as expeted. https://docs.acquia.com/blt/extending-blt/#overriding-the-environment-detector
It's not working because... Environment Detector will incorrectly return true. What we will see, is in production environments config splits for local and prod are active.
After digging into it, it looks like it is related to: vendor/acquia/blt/src/Robo/Common/EnvironmentDetector.php which calls
parent::isLocalEnv()
, which will return true if it does not have the AH_ENV.I have made a workaround by patching blt, however I don't think this is the right approach.