in rake-runner-agent/src/jetbrains/buildServer/agent/rakerunner/utils/BundlerUtil.java [212:255]
public static String determineGemfilePath(@NotNull final ModifiableRunnerContext context) throws RakeTasksBuildService.MyBuildFailureException {
final Map<String, String> runnerEnvParams = context.getEnvParameters();
final Map<String, String> buildParams = context.getBuildParameters();
final String userDefinedGemFilePath = runnerEnvParams.get(BUNDLE_GEMFILE_ENV_VAR);
if (!StringUtil.isEmpty(userDefinedGemFilePath)) {
return userDefinedGemFilePath;
}
final boolean oldResolve = ConfigurationParamsUtil.isParameterEnabled(buildParams, RakeRunnerConstants.GEMFILE_RESOLVE_IN_CHECKOUT_DIRECTORY);
final String resolvingBaseDirectory = oldResolve ? context.getCheckoutDirectory() : context.getWorkingDirectory();
final String customGemFilePath = buildParams.get(CUSTOM_GEMFILE_RELATIVE_PATH);
String gemfilePath;
if (!StringUtil.isEmpty(customGemFilePath)) {
if (FileUtil.isAbsolute(customGemFilePath)) {
return customGemFilePath;
}
// use custom
gemfilePath = resolvingBaseDirectory + File.separator + customGemFilePath;
if (checkIfExists(gemfilePath)) {
return gemfilePath;
}
final String msg = "Gemfile wasn't found. You specified path to file '" + gemfilePath + "'.";
throw new RakeTasksBuildService.MyBuildFailureException(msg);
} else {
// default one
final String[] gemFileNames = new String[]{"Gemfile", "GemFile", "gemfile"};
for (String name : gemFileNames) {
gemfilePath = resolvingBaseDirectory + File.separator + name;
if (checkIfExists(gemfilePath)) {
return gemfilePath;
}
}
final String pattern = "Cannot find Gemfile in %s directory : '%s'. \n" +
"If Gemfile is located in other directory please specify Gemfile relative path using system property: " + CUSTOM_GEMFILE_RELATIVE_PATH;
String msg;
if (oldResolve) {
msg = String.format(pattern, "checkout", context.getCheckoutDirectory());
} else {
msg = String.format(pattern, "working", context.getWorkingDirectory());
}
throw new RakeTasksBuildService.MyBuildFailureException(msg);
}
}