diff --git a/bin/build b/bin/build index 016645c90..00af3c9aa 100755 --- a/bin/build +++ b/bin/build @@ -8,7 +8,7 @@ APP_DIR=$(pwd) BIN_DIR=$(cd $(dirname $0); pwd) BUILDPACK_DIR=$(dirname $BIN_DIR) -# legacy buildpack uses $STACK +# legacy buildpack uses $STACK export STACK=$CNB_STACK_ID source "$BIN_DIR/support/bash_functions.sh" diff --git a/lib/language_pack/helpers/bundler_wrapper.rb b/lib/language_pack/helpers/bundler_wrapper.rb index 6caa5eca8..3b60f88e4 100644 --- a/lib/language_pack/helpers/bundler_wrapper.rb +++ b/lib/language_pack/helpers/bundler_wrapper.rb @@ -101,7 +101,7 @@ def initialize(version_hash, major_minor) def initialize(options = {}) @bundler_tmp = Pathname.new(Dir.mktmpdir) @fetcher = options[:fetcher] || LanguagePack::Fetcher.new(LanguagePack::Base::VENDOR_URL) # coupling - @gemfile_path = options[:gemfile_path] || Pathname.new("./Gemfile") + @gemfile_path = options[:gemfile_path] || Pathname.new(env("BUNDLE_GEMFILE") || "./Gemfile") @gemfile_lock_path = Pathname.new("#{@gemfile_path}.lock") @version = self.class.detect_bundler_version(contents: @gemfile_lock_path.read(mode: "rt")) @@ -223,7 +223,7 @@ def needs_ruby_global_append_path? end def bundler_version_escape_valve! - topic("Removing BUNDLED WITH version in the Gemfile.lock") + topic("Removing BUNDLED WITH version in the #{@gemfile_lock_path}") contents = File.read(@gemfile_lock_path, mode: "rt") File.open(@gemfile_lock_path, "w") do |f| f.write contents.sub(/^BUNDLED WITH$(\r?\n) (?\d+)\.\d+\.\d+/m, '') diff --git a/lib/language_pack/ruby.rb b/lib/language_pack/ruby.rb index b9574dba6..adea9bea9 100644 --- a/lib/language_pack/ruby.rb +++ b/lib/language_pack/ruby.rb @@ -144,7 +144,7 @@ def build build_bundler # TODO post_bundler might need to be done in a new layer bundler.clean - gem_layer.metadata[:gems] = Digest::SHA2.hexdigest(File.read("Gemfile.lock")) + gem_layer.metadata[:gems] = Digest::SHA2.hexdigest(File.read(gemfile_lock_path)) gem_layer.metadata[:stack] = @stack gem_layer.metadata[:ruby_version] = run_stdout(%q(ruby -v)).strip gem_layer.metadata[:rubygems_version] = run_stdout(%q(gem -v)).strip @@ -779,7 +779,7 @@ def build_bundler if bundler.windows_gemfile_lock? log("bundle", "has_windows_gemfile_lock") - File.unlink("Gemfile.lock") + File.unlink(gemfile_lock_path) ENV.delete("BUNDLE_DEPLOYMENT") warn(<<~WARNING, inline: true) @@ -816,7 +816,7 @@ def build_bundler # we need to set BUNDLE_CONFIG and BUNDLE_GEMFILE for # codon since it uses bundler. - env_vars["BUNDLE_GEMFILE"] = "#{pwd}/Gemfile" + env_vars["BUNDLE_GEMFILE"] = "#{pwd}/#{gemfile_path}" env_vars["BUNDLE_CONFIG"] = "#{pwd}/.bundle/config" env_vars["CPATH"] = noshellescape("#{yaml_include}:$CPATH") env_vars["CPPATH"] = noshellescape("#{yaml_include}:$CPPATH") @@ -1350,4 +1350,16 @@ def purge_bundler_cache(stack = nil) # need to reinstall language pack gems install_bundler_in_app(slug_vendor_base) end + + def current_gemfile + env("BUNDLE_GEMFILE") || "Gemfile" + end + + def gemfile_path + Pathname.new(current_gemfile) + end + + def gemfile_lock_path + Pathname.new("#{current_gemfile}.lock") + end end