Problem
The dev-toolchain container image sets `BUNDLE_PATH=/usr/local/bundle` as an environment variable. Per Bundler's config precedence, envvars beat the project's `.bundle/config` file — so even with `BUNDLE_APP_CONFIG=/workspace/.bundle` (set by the Makefile's `RUBY_DOCKER_ENV`), the project's `BUNDLE_PATH: vendor/bundle` is silently ignored.
Result: `bundle exec` for project-pinned tools (rubocop, rspec) hits `Bundler::GemNotFound` because it's looking at `/usr/local/bundle` instead of the project's `vendor/bundle`.
Repro
```bash
docker run --rm -v "$PWD":/workspace -w /workspace \
-e BUNDLE_APP_CONFIG=/workspace/.bundle \
ghcr.io/devrail-dev/dev-toolchain:1.11.0 \
bash -c "bundle config | grep -E 'path|app_config'"
Output shows:
path Set for your local app (/workspace/.bundle/config): "vendor/bundle"
Set via BUNDLE_PATH: "/usr/local/bundle" ← envvar wins
```
Fix
Two options:
-
Unset BUNDLE_PATH in the container's entrypoint or env config so the project's `.bundle/config` wins. Conceptually cleanest.
-
Have the Makefile's RUBY_DOCKER_ENV explicitly override `BUNDLE_PATH` to a path consistent with the project config. Adds noise to RUBY_DOCKER_ENV but works:
```make
RUBY_DOCKER_ENV := $(if $(HAS_RUBY),-e BUNDLE_APP_CONFIG=/workspace/.bundle -e BUNDLE_PATH=vendor/bundle,)
```
Filed from a downstream tipsyhive Makefile sync to v1.11.0. Project-side patch applied with option 2.
Problem
The dev-toolchain container image sets `BUNDLE_PATH=/usr/local/bundle` as an environment variable. Per Bundler's config precedence, envvars beat the project's `.bundle/config` file — so even with `BUNDLE_APP_CONFIG=/workspace/.bundle` (set by the Makefile's `RUBY_DOCKER_ENV`), the project's `BUNDLE_PATH: vendor/bundle` is silently ignored.
Result: `bundle exec` for project-pinned tools (rubocop, rspec) hits `Bundler::GemNotFound` because it's looking at `/usr/local/bundle` instead of the project's `vendor/bundle`.
Repro
```bash
docker run --rm -v "$PWD":/workspace -w /workspace \
-e BUNDLE_APP_CONFIG=/workspace/.bundle \
ghcr.io/devrail-dev/dev-toolchain:1.11.0 \
bash -c "bundle config | grep -E 'path|app_config'"
Output shows:
path Set for your local app (/workspace/.bundle/config): "vendor/bundle"
Set via BUNDLE_PATH: "/usr/local/bundle" ← envvar wins
```
Fix
Two options:
Unset BUNDLE_PATH in the container's entrypoint or env config so the project's `.bundle/config` wins. Conceptually cleanest.
Have the Makefile's RUBY_DOCKER_ENV explicitly override `BUNDLE_PATH` to a path consistent with the project config. Adds noise to RUBY_DOCKER_ENV but works:
```make$(if $ (HAS_RUBY),-e BUNDLE_APP_CONFIG=/workspace/.bundle -e BUNDLE_PATH=vendor/bundle,)
RUBY_DOCKER_ENV :=
```
Filed from a downstream tipsyhive Makefile sync to v1.11.0. Project-side patch applied with option 2.