Skip to content
This repository was archived by the owner on Jul 14, 2022. It is now read-only.

Pull Upstream - #1

Open
DheerG wants to merge 1565 commits into
happy-co:masterfrom
heroku:main
Open

Pull Upstream#1
DheerG wants to merge 1565 commits into
happy-co:masterfrom
heroku:main

Conversation

@DheerG

@DheerG DheerG commented Jul 14, 2022

Copy link
Copy Markdown

No description provided.

schneems and others added 30 commits February 20, 2024 14:05
* Clean up release automation

The scripts in .github/scripts were for CNB releases which have been moved over to https://github.com/heroku/buildpacks-ruby and have not been used for some time.

The rake task to prepare releases has been moved to a GitHub action. The deploy task is still used, it's updated to work with the new standard CHANGELOG format.

* Reinstate the release task

Accidentally removed in the last commit

* Remove "tarballer" 

It was used by the removed GitHub actions scripts
…ions (#1428)

* ## Bundler versions 2.4.22 and 2.5.6 are now available for Ruby Applications

The [Ruby Buildpack](https://devcenter.heroku.com/articles/ruby-support#libraries) now installs a version of bundler based on the major and minor version listed in the `Gemfile.lock` under the `BUNDLED WITH` key. Previously, it only used the major version. Now, this logic will be used:

- `BUNDLED WITH` 1.x will receive bundler `1.17.3`
- `BUNDLED WITH` 2.0.x to 2.3.x will receive bundler `2.3.25`
- `BUNDLED WITH` 2.4.x will receive bundler `2.4.22`
- `BUNDLED WITH` 2.5.x and above will receive bundler `2.5.6`

It is strongly recommended that you have both a `RUBY VERSION` and `BUNDLED WITH` version listed in your `Gemfile.lock`. If you do not have those values, you can generate them and commit them to git:

```
$ bundle update --ruby
$ git add Gemfile.lock
$ git commit -m "Update Gemfile.lock"
```

Applications without these values specified in the `Gemfile.lock` may break unexpectedly when the defaults change.

* Only match major versions with major logic

Co-authored-by: Josh W Lewis <josh.w.lewis@gmail.com>

---------

Co-authored-by: Josh W Lewis <josh.w.lewis@gmail.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
* Fix tests after bundler change

The Ruby buildpack uses the Ruby buildpack on CI. When the bundler versions changed in 56ff138 it also changed the behavior of these tests (which use the local bundler version). That means that after the buildpack was deployed, it retroactively meant that tests on main were failing.

The issue with these tests is that they're using a feature of bundler that's been removed, specifically this change https://devcenter.heroku.com/changelog-items/2809. In these tests the Ruby version is specified in the Gemfile but not the Gemfile.lock:

- Gemfile https://github.com/sharpstone/mri_193/blob/master/Gemfile
- Gemfile.lock https://github.com/sharpstone/mri_193/blob/master/Gemfile.lock 

With the newer version of bundler, these tests now fail. To fix this tests will need to be updated or removed (based on their current relevance).

* Clean up unused hatchet apps

* Remove RBX and "build" support

Rubinius is a Ruby implementation that was available to use on the platform a long time ago but has not been supported for some time:

Ruby 1.9.2 requires a "build" branch of logic that can be removed as well. It is not on any existing stacks and was not present on Heroku-18:

```
$ curl -I https://heroku-buildpack-ruby.s3.us-east-1.amazonaws.com/heroku-18/ruby-2.5.7.tgz
HTTP/1.1 200 OK
x-amz-id-2: Hl89PTav6LfvU90vP97YsBc5DEBptax9s4PZU+3ubIrIUBY54lD0f2FXMOCgh9XQEQRU+5ia1x4=
x-amz-request-id: KVDZM54WRBN5ASGT
Date: Mon, 15 Apr 2024 15:55:27 GMT
Last-Modified: Tue, 01 Oct 2019 14:46:30 GMT
ETag: "93ff97625abfc6ccd1a071bb0fda8e66"
x-amz-version-id: null
Accept-Ranges: bytes
Content-Type:
Server: AmazonS3
Content-Length: 11995820
$ curl -I https://heroku-buildpack-ruby.s3.us-east-1.amazonaws.com/heroku-18/ruby-1.9.2.tgz
HTTP/1.1 404 Not Found
x-amz-request-id: 1NKVW4VD3T94T71R
x-amz-id-2: tTow7CFW9BcWmAbkEWvrqPz5zJdsy7ry8Jm39v+EURa4RN/UpslBhhGf1iHzOrpJ4n1BJxiGGoI=
Content-Type: application/xml
Date: Mon, 15 Apr 2024 15:55:31 GMT
Server: AmazonS3
```

Other unused functionality that's being removed:

- CDN support for downloading Ruby binaries. This provided no meaningful download improvement when deploying as the binaries are on S3 in the same data center. This was disabled a long time ago.
- A "default cache" that was warmed with common gems for the most common Ruby version. This was effective at reducing "first build" time but the complexity exploded if we were to try and support N versions of Rails and M versions of Ruby for this feature. Additionally the community has moved to pre-built binaries for some expensive components such as nokogiri.

* Update lib/language_pack/installers/heroku_ruby_installer.rb

Co-authored-by: Josh W Lewis <josh.w.lewis@gmail.com>

---------

Co-authored-by: Josh W Lewis <josh.w.lewis@gmail.com>
Heroku-24 base image supports two architectures amd64 and arm64. We've built binaries for these two architectures heroku/docker-heroku-ruby-builder#38. Effectively this means that the s3 bucket that holds the Ruby binaries has an additional folder. Previously files were at `<stack>/ruby-<version>.tgz` now they are at `<stack>/<arch>/ruby-<version>.tgz` but only for `heroku-24` and future stacks moving forward.

To support multiple architectures, the buildpack needs to detect the current architecture and whether or not the current stack supports multiple architectures.

Beyond downloading binaries, the buildpack is aware of the S3 structure to travers version numbers in order to warn customers when a newer version of a ruby version is available. We also warn customers if their current Ruby version is not available on the next stack. This behavior is implemented and tested in this commit, however we're not turning on warnings for `heroku-24` yet as customers cannot currently use it.
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
* Deprecate beta CNB support

CNB support was introduced into this buildpack as an experiment. The experiment is over, anyone wanting to use the official CNB (still in "preview" support) should use https://github.com/heroku/buildpacks-ruby

* Apply suggestions from code review

Co-authored-by: Josh W Lewis <josh.w.lewis@gmail.com>

---------

Co-authored-by: Josh W Lewis <josh.w.lewis@gmail.com>
* Fix heroku-24 bootstrap ruby support

The Ruby buildpack needs Ruby to run. For the heroku-24 stack the location of ruby binaries changed to include an architecture specifier (amd64/arm64) but the logic for bootstrapping a Ruby version was not updated.

* Apply suggestions from code review

Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>

* Only vendor required binaries

Classic build packs do not support ARM for now so we don't need to vendor it.

* Make shellcheck happy

* Fix stack/base-image name

---------

Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
#1452)

* make reference to sprockets unnnecesary

* added changelog entry
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
This update reflects the actual release dates and associated changes.
The buildpack in this repo is primarily a classic Heroku buildpack,
however, as part of the initial exploration into CNBs had experimental
CNB support added some time ago.

However, the maintained Ruby CNB now exists in a separate repo:
https://github.com/heroku/buildpacks-ruby

The experimental CNB support in this repo doesn't actually work any more
since the buildpack API version it implements (v0.2) isn't supported by
modern `lifecycle` versions - and attempts at building encounter this
error:

```
ERROR: failed to set API for Buildpack 'heroku/ruby@0.1.4': buildpack API version '0.2' is incompatible with the lifecycle
```

In addition, it's not even possible to use this repo with a CNB build
without having cloned it locally, since:
1. The CNB parts are no longer published
2. The old CNB release assets were deleted a year or so ago:
   https://github.com/heroku/heroku-buildpack-ruby/releases
3. Pack/lifecycle doesn't support cloning Git URLs.
4. Attempting to use a buildpack URL pointing at the GitHub gzip archive
   fails due to GitHub's nesting of the repo inside a subdirectory:

```
$ pack build --builder heroku/builder:22 --buildpack https://github.com/heroku/heroku-buildpack-ruby/archive/refs/heads/main.tar.gz ruby-test
...
Downloading from https://github.com/heroku/heroku-buildpack-ruby/archive/refs/heads/main.tar.gz
93.2 KB/-1 B
ERROR: failed to build: downloading buildpack: extracting from https://github.com/heroku/heroku-buildpack-ruby/archive/refs/heads/main.tar.gz: reading buildpack: reading buildpack.toml: could not find entry path 'buildpack.toml': not exist
```

Given both the Buildpack API error, and the GitHub URL issues no one is
using the CNB implementation here, and so its dead code that should be
removed to prevent confusion (eg over where the CNB lives).

A deprecation warning was previously added in #1445 (though as above
it's unlikely anyone even saw that message, since the build was already
erroring before it gets that far).
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
expect new line at the end of the `which` command output by stripping it to satisfy the test

using the getting started fixture as expected by the current spec file

Co-authored-by: Richard Schneeman <rschneeman@salesforce.com>
* Let bundler >= 2.2 handle windows platform

Fixes #1157

Because it has support for multiple platforms in Gemfile.lock. So deleting Gemfile.lock when one of the platforms is windows is not good.
Bundler's error message tells the user how to handle it.
```
Your bundle only supports platforms ["mingw"] but your local platform is x86_64-linux. Add the current platform to the lockfile with
`bundle lock --add-platform x86_64-linux` and try again.
```

* Test and document Windows bundler 2.2+ behavior

* Update changelogs/unreleased/windows_gemfile.md

Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>

---------

Co-authored-by: Rune Philosof <57357936+runephilosof-abtion@users.noreply.github.com>
Co-authored-by: Ed Morley <501702+edmorley@users.noreply.github.com>
…1471)

Bumps the ruby-dependencies group with 8 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [heroku_hatchet](https://github.com/heroku/hatchet) | `8.0.2` | `8.0.4` |
| [rspec-core](https://github.com/rspec/rspec-core) | `3.12.2` | `3.13.0` |
| [excon](https://github.com/excon/excon) | `0.109.0` | `0.110.0` |
| [rake](https://github.com/ruby/rake) | `13.1.0` | `13.2.1` |
| [parallel_tests](https://github.com/grosser/parallel_tests) | `4.4.0` | `4.7.1` |
| [json](https://github.com/flori/json) | `2.7.1` | `2.7.2` |
| [ci-queue](https://github.com/Shopify/ci-queue) | `0.44.0` | `0.55.0` |
| [redis](https://github.com/redis/redis-rb) | `5.0.8` | `5.2.0` |



Updates `heroku_hatchet` from 8.0.2 to 8.0.4
- [Changelog](https://github.com/heroku/hatchet/blob/main/CHANGELOG.md)
- [Commits](heroku/hatchet@v8.0.2...v8.0.4)

Updates `rspec-core` from 3.12.2 to 3.13.0
- [Release notes](https://github.com/rspec/rspec-core/releases)
- [Changelog](https://github.com/rspec/rspec-core/blob/main/Changelog.md)
- [Commits](rspec/rspec-core@v3.12.2...v3.13.0)

Updates `rspec-expectations` from 3.12.3 to 3.13.1
- [Release notes](https://github.com/rspec/rspec-expectations/releases)
- [Changelog](https://github.com/rspec/rspec-expectations/blob/main/Changelog.md)
- [Commits](rspec/rspec-expectations@v3.12.3...v3.13.1)

Updates `excon` from 0.109.0 to 0.110.0
- [Changelog](https://github.com/excon/excon/blob/master/changelog.txt)
- [Commits](excon/excon@v0.109.0...v0.110.0)

Updates `rake` from 13.1.0 to 13.2.1
- [Release notes](https://github.com/ruby/rake/releases)
- [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc)
- [Commits](ruby/rake@v13.1.0...v13.2.1)

Updates `parallel_tests` from 4.4.0 to 4.7.1
- [Changelog](https://github.com/grosser/parallel_tests/blob/master/CHANGELOG.md)
- [Commits](grosser/parallel_tests@v4.4.0...v4.7.1)

Updates `json` from 2.7.1 to 2.7.2
- [Release notes](https://github.com/flori/json/releases)
- [Changelog](https://github.com/flori/json/blob/master/CHANGES.md)
- [Commits](ruby/json@v2.7.1...v2.7.2)

Updates `ci-queue` from 0.44.0 to 0.55.0
- [Release notes](https://github.com/Shopify/ci-queue/releases)
- [Commits](Shopify/ci-queue@v0.44.0...v0.55.0)

Updates `redis` from 5.0.8 to 5.2.0
- [Changelog](https://github.com/redis/redis-rb/blob/master/CHANGELOG.md)
- [Commits](redis/redis-rb@v5.0.8...v5.2.0)

---
updated-dependencies:
- dependency-name: heroku_hatchet
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: ruby-dependencies
- dependency-name: rspec-core
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: rspec-expectations
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: excon
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: rake
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: parallel_tests
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: json
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: ruby-dependencies
- dependency-name: ci-queue
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: redis
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Add platform information to windows support docs

Update windows docs to specify how to add Heroku's platform to the Gemfile.lock. In #1469 the behavior changed for Windows users. However if they're depending on a platform specific gem and they don't have the `x86_64-linux` platform locked then their dependency resolution will not use that information and their deploy will fail with a message saying to run those commands. 

By adding the instructions into the descanter article, warning message, and changelog entry there's a better chance windows users will succeed on their first deploy after #1469 

## Commands breakdown

Install the latest bundler version at the system level:

```
> gem install bundler
```

Update the current project to explicitly use the latest version of bundler:

```
> bundle update --bundler
```

Ensure that both `ruby` and `x86_64-linux` platforms are specified in the `Gemfile.lock`:

```
> bundle lock --add-platform ruby
> bundle lock --add-platform x86_64-linux
```

Ensure bundler has resolved dependencies with all platforms in mind:

```
> bundle install
```

Commit the results to git:

```
> git add Gemfile.lock
> git commit -m "Upgrade bundler"
```

* Fix variable access for windows users


Reported in #1472, the code was using an instance variable that does not exist so it raises an error. The `bundler` call is both a class and instance method https://github.com/heroku/heroku-buildpack-ruby/blob/4d2621c7dedff3edc95ee809d1cd71d6186fb796/lib/language_pack/ruby.rb#L27-L33. Internally it's stored as a class instance variable https://www.ruby-lang.org/en/documentation/faq/8/ so the data can be shared between the class and instances.

The fix is to use `bundler` instead of `@bundler`. The test exercises and asserts that codepath was executed.

Close #1472

* Update warning message to be less confusing

Based on this conversation #1469 (comment)
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
heroku-linguist Bot and others added 30 commits March 25, 2026 14:50
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
Bumps the ruby-dependencies group with 2 updates: [excon](https://github.com/excon/excon) and [json](https://github.com/ruby/json).


Updates `excon` from 1.4.0 to 1.4.2
- [Changelog](https://github.com/excon/excon/blob/master/changelog.txt)
- [Commits](excon/excon@v1.4.0...v1.4.2)

Updates `json` from 2.19.2 to 2.19.3
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](ruby/json@v2.19.2...v2.19.3)

---
updated-dependencies:
- dependency-name: excon
  dependency-version: 1.4.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: ruby-dependencies
- dependency-name: json
  dependency-version: 2.19.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: ruby-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Prepare release v357

* Update tests for heroku-26

---------

Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
* Replace curl -s with --no-progress in fetcher.rb

Using `curl -s` without `--show-error` silently swallows error
messages when downloads fail, making failures hard to debug.
Replace with `--no-progress` which hides only the progress bar
while still showing error messages and retry backoff status.

* Use long-form curl flags in fetcher.rb

Convert short curl flags to their long-form equivalents for
readability: -I to --head, -O to --remote-name, -L to --location,
-o to --output.

* Replace curl -s with --no-progress in plugin_installer.rb

Same fix as fetcher.rb: -s silently swallows errors. Use
--no-progress to hide only the progress bar.

* Use long-form curl flags in plugin_installer.rb

Convert -o to --output for readability.

* Replace -s/--silent with --no-progress in bash scripts

These scripts already paired -s with --show-error so errors were
visible, but --no-progress also surfaces retry backoff messages
and removes the need for --show-error.

* Use long-form curl flags in download_ruby

Convert -o to --output for readability.

* Changelog
`Pathname#join` can have somewhat surpising behavior when passed
an absolute path:

```ruby
>> Pathname.new("/home").join("/.bundle/config").to_s
=> "/.bundle/config"
>> File.join("/home", "/.bundle/config")
=> "/home/.bundle/config"
```

Co-authored-by: Jean Boussier <jean.boussier@gmail.com>
Co-authored-by: Isla Hoe <isla.hoe@intercom.io>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
* Add DotRubyVersionFile parser for .ruby-version files

Parses .ruby-version file contents and produces a LanguagePack::RubyVersion
instance. Uses service object pattern: initialize stores contents, call
returns a Result struct with ruby_version and a warnings array.

Supported formats:
- Plain version: 3.4.8
- Ruby prefix: ruby-3.4.8
- With @org suffix: ruby-3.4.8@company-name
- Pre-release (dot or dash): 3.4.0.rc1, 3.4.0-preview2
- Comments (#) and blank lines are ignored

Invalid inputs produce warnings (not errors):
- JRuby prefix
- Version specifiers (>=, ~>, etc.)
- Multiple version lines
- Unparseable content

* Address Flappy test

* Add pre-release direct assertions and edge-case tests for DotRubyVersionFile

- Expose `pre` via attr_reader on RubyVersion so tests can assert it directly
- Assert `result.ruby_version.pre` in all three existing pre-release tests
- Add test for combined pipeline: prefix strip + gemset strip + pre-release
- Add test for CRLF line endings to protect against regression

* Test two-part versions like "3.4" and improve parse error message

Two-part versions (e.g. "3.4") are a common real-world input from
rbenv/mise/asdf but are intentionally unsupported — only full
major.minor.patch versions are accepted. The test documents this
behavior and the updated warning message makes the requirement explicit.

* Fix NoMethodError crash on bare "ruby-" input

"ruby-".delete_prefix("ruby-") produces "", and "".split("@") returns
[] in Ruby, so .first yields nil which crashes on nil.match?(...).
Guard with || "" to ensure the method always returns a String.
* Report .ruby-version vs Gemfile.lock version comparison

Parse the .ruby-version file via DotRubyVersionFile in the build
flow and pass the result into get_ruby_version for comparison
against the Gemfile.lock ruby version.

Two new report keys:
- ruby.dot_ruby_version.version: parsed version string
- ruby.dot_ruby_version.vs_gemfile_lock: "match",
  "dot_ruby_version_higher", or "gemfile_lock_higher"

* Add unit tests for .ruby-version vs Gemfile.lock comparison

Covers: no file, unparseable file, version match, .ruby-version
higher, Gemfile.lock higher, and Gemfile.lock default (no RUBY
VERSION section).

* Add hatchet smoke test for .ruby-version report keys

Extends the existing report extraction test to include a
.ruby-version file and assert the new comparison keys appear
in the build report.

* Use <=> for version comparison in .ruby-version report

* Rename dot_ruby_version report keys to drop ruby. prefix

Renames ruby.dot_ruby_version to dot_ruby_version.contents
and ruby.dot_ruby_version.{version,vs_gemfile_lock} to
dot_ruby_version.{version,vs_gemfile_lock} to parallel the
gemfile_lock.ruby_version.* naming convention.

* Fixup terminology

The term "version specifier" is used to denote `>=|<=|~>|>|<` etc., which isn't supported. Changing to a more correct term.

* Include matched version specifier in output

* Expand version specifier warnings

Any non-alphanumeric symbol will block parsing. Developers coming from other ecosystems might try to use `=4.0.5` even though it's not a commonly accepted pattern in Ruby. While the regex is greedy and would match something like `<~~~~~>4.0.5` which isn't **technically** a version specifier, we're pulling out the value so it's clear which part of the regex isn't valid.
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
Calls the shared `_classic-buildpack-publish.yml` workflow from `heroku/languages-github-actions` to publish the `heroku/ruby` buildpack to the registry via OIDC.
- Rename to "Release Buildpack" for consistency with the CNB release workflows
- Remove the workflow_dispatch "qa" input; QA staging publishes stay an
  optional feature of the reusable workflow, enabled from a test buildpack
  when needed rather than exposed on every classic buildpack caller
- Drop the now-unused "qa" with: input (reusable workflow defaults it to false)
Bumps the ruby-dependencies group with 4 updates: [toml-rb](https://github.com/emancu/toml-rb), [excon](https://github.com/excon/excon), [rake](https://github.com/ruby/rake) and [json](https://github.com/ruby/json).


Updates `toml-rb` from 4.1.0 to 4.2.0
- [Release notes](https://github.com/emancu/toml-rb/releases)
- [Commits](emancu/toml-rb@v4.1.0...v4.2.0)

Updates `excon` from 1.4.2 to 1.5.0
- [Changelog](https://github.com/excon/excon/blob/master/changelog.txt)
- [Commits](excon/excon@v1.4.2...v1.5.0)

Updates `rake` from 13.3.1 to 13.4.2
- [Release notes](https://github.com/ruby/rake/releases)
- [Changelog](https://github.com/ruby/rake/blob/master/History.rdoc)
- [Commits](ruby/rake@v13.3.1...v13.4.2)

Updates `json` from 2.19.3 to 2.19.8
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](ruby/json@v2.19.3...v2.19.8)

---
updated-dependencies:
- dependency-name: toml-rb
  dependency-version: 4.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: excon
  dependency-version: 1.5.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: rake
  dependency-version: 13.4.2
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: json
  dependency-version: 2.19.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: ruby-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v6...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This test was added to assert the order of PATH, and the `rake` executable. An implementation detail is that it uses `heroku run` in the background as well as the `--exit-code` flag.

The Heroku CLI changed in 11.8.1 for users of `--exit-code`:

```
$ npm_config_min_release_age=0 npx -y heroku@11.8.0 run --app "$APP" --exit-code -- console
Running console on ⬢ fast-plains-61981... up, run.3560
/bin/bash: line 1: console: command not found

 ›   Error: Process exited with code 127

$ npm_config_min_release_age=0 npx -y heroku@11.8.1 run --app "$APP" --exit-code -- console
Running console on ⬢ fast-plains-61981... up, run.1524
irb(main):001>
```

This resolves the behavior to match what a user would expect when they're NOT using `--exit-code`. The behavior you're seeing above is:

There's a shortcut so when `heroku run console` is used, it checks to see if a `console` process type exists and runs that if it does. heroku/cli#3804 changed fixed the behavior to mirror `heroku run` (without `--exit-code`). Which broke the test.

Since `heroku run` is an implementation detail, we can bypass it using `bash -c`.
* Add BundleBinstubCheck helper to detect bin/bundle binstub

When `bin/bundle` is present in an app, `bundle clean` can remove the
installed version of bundler. At runtime, the app then falls back to
the default bundler version shipped with Ruby (e.g. Ruby 3.4.x ships
with bundler 2.6.x), which may be a different major version than what
the app expects.

While Rails no longer generates a `bin/bundle` binstub
(rails/rails#54687), many pre-existing apps
still have this file.

This commit adds a new helper class and tests that detect the presence
of `bin/bundle` and emit a warning advising the user to remove it. The
class follows the same pattern as the existing `BinstubCheck` helper.

Tests can be run with:

    $ rspec spec/helpers/bundle_binstub_check_spec.rb

Issue: #1690
Upstream: ruby/rubygems#9218

* Wire BundleBinstubCheck into the build flow

Integrates the `bin/bundle` binstub warning into the buildpack's
compile phase. The check runs alongside the existing bad-binstub
shebang check during the early warning stage, before Ruby and bundler
are installed.

When a user deploys an app that contains `bin/bundle`, they will now
see a build warning explaining the issue and how to fix it.

Issue: #1690
Made-with: Cursor

* Code style
* Bump the ruby-dependencies group across 1 directory with 2 updates

Bumps the ruby-dependencies group with 2 updates in the / directory: [json](https://github.com/ruby/json) and [standard](https://github.com/standardrb/standard).

Updates `json` from 2.19.8 to 2.20.0
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](ruby/json@v2.19.8...v2.20.0)

Updates `standard` from 1.54.0 to 1.55.0
- [Release notes](https://github.com/standardrb/standard/releases)
- [Changelog](https://github.com/standardrb/standard/blob/main/CHANGELOG.md)
- [Commits](standardrb/standard@v1.54.0...v1.55.0)

---
updated-dependencies:
- dependency-name: json
  dependency-version: 2.20.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: standard
  dependency-version: 1.55.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>

* Disable Lint/InterpolationCheck for literal rails runner command

standard 1.55.0 (rubocop 1.87.0) added Lint/InterpolationCheck, which
flags the single-quoted expected command strings in the RailsRunner spec.
These strings must literally contain `#{...}` because they are the raw
command sent to the `rails runner` subprocess, so converting to double
quotes would break the assertion. Disable the cop inline instead.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…1759)

Bumps the ruby-dependencies group with 3 updates in the / directory: [excon](https://github.com/excon/excon), [json](https://github.com/ruby/json) and [standard](https://github.com/standardrb/standard).


Updates `excon` from 1.5.0 to 1.6.0
- [Changelog](https://github.com/excon/excon/blob/master/changelog.txt)
- [Commits](excon/excon@v1.5.0...v1.6.0)

Updates `json` from 2.20.0 to 2.21.1
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](ruby/json@v2.20.0...v2.21.1)

Updates `standard` from 1.55.0 to 1.56.0
- [Release notes](https://github.com/standardrb/standard/releases)
- [Changelog](https://github.com/standardrb/standard/blob/main/CHANGELOG.md)
- [Commits](standardrb/standard@v1.55.0...v1.56.0)

---
updated-dependencies:
- dependency-name: excon
  dependency-version: 1.6.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: json
  dependency-version: 2.21.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
- dependency-name: standard
  dependency-version: 1.56.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: ruby-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The heroku-nodebin S3 bucket is being sunset, so point the Yarn download
at the public npm registry tarball instead
(https://registry.npmjs.org/yarn/-/yarn-VERSION.tgz).

The npm tarball is structurally identical to the S3 one (both extract to
package/ with the same bin/yarn and bin/yarnpkg), so the existing
Fetcher#fetch_untar + strip_components: 1 install path and the resulting
on-disk layout are unchanged. Only the URL string changes; note npm's
filename convention has no "v" prefix and uses .tgz.

Add a unit spec guarding that Nodebin.yarn points at registry.npmjs.org
so it can't silently regress back to the S3 bucket.

W-21368290
Bumps [json](https://github.com/ruby/json) from 2.21.1 to 2.21.2.
- [Release notes](https://github.com/ruby/json/releases)
- [Changelog](https://github.com/ruby/json/blob/master/CHANGES.md)
- [Commits](ruby/json@v2.21.1...v2.21.2)

---
updated-dependencies:
- dependency-name: json
  dependency-version: 2.21.2
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: heroku-linguist[bot] <136119646+heroku-linguist[bot]@users.noreply.github.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.