in rake-runner-agent/src/jetbrains/buildServer/agent/feature/RubyEnvConfiguratorService.java [99:147]
protected EnvironmentPatchableMap patchRunnerEnvironment(@NotNull final BuildRunnerContext context,
@NotNull final RubySdk sdk,
@NotNull final RubyEnvConfiguratorConfiguration configuration,
@NotNull final SharedParams sharedParams) throws RunBuildException {
// editable env variables
final ModifiableRunnerContext mc = new ModifiableRunnerContext(context);
final EnvironmentPatchableMap env = mc.getEnvParameters();
try {
// Inspect env, warn about any problems
RVMSupportUtil.inspectCurrentEnvironment(env, sdk, context.getBuild().getBuildLogger());
// Save patched env variables to runnerEnvParams
if (SdkUtil.isRvmSdk(sdk) && !sdk.isSystem()) {
// true rvm sdk
RVMSupportUtil.patchEnvForRVMIfNecessary(sdk, env);
} else {
// fake or non-rvm sdk
if (SdkUtil.isRvmSdk(sdk)) {
RVMSupportUtil.patchEnvForRVMIfNecessary(sdk, env);
}
if (SdkUtil.isRbEnvSdk(sdk)) {
((RbEnvRubySdk)sdk).patchEnvironment(env);
}
// see RakeRunnerConstants.CUSTOM_BUNDLE_FOLDER_PATH.
RubySDKUtil.patchPathEnvForNonRvmOrSystemRvmSdk(sdk, mc);
}
context.addRunnerParameter(ENVS_TO_UNSET_PARAM, StringUtil.join(env.getRemovedKeys(), ","));
// apply updated env variables to context:
for (Map.Entry<String, String> keyAndValue : env.entrySet()) {
context.addEnvironmentVariable(keyAndValue.getKey(), keyAndValue.getValue());
}
// success, mark that shared params were successfully applied
sharedParams.setApplied(true);
return env;
} catch (RakeTasksBuildService.MyBuildFailureException e) {
// only show error msg, it is user-friendly
throw new RunBuildException(e.getMessage());
} catch (Exception e) {
throw new RunBuildException(e);
}
}