GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||
GeezerVison is showing github.com — Fix gem BUNDLE_GEMFILE via symlinked dir (#896) by mikolalysenko · Pull Request #1401 · SocketDev/socket-patch Conversation
|
| Issue | Test | Before fix | After |
|---|---|---|---|
| #896 (env, local config, global config, env-keeps-root, BUNDLE_LOCKFILE; both link directions) | formats::gem::manifest::tests::a_symlinked_spelling_of_the_root_is_the_roots_own_manifest |
FAILED | ok |
#896 (on-disk .bundle/config with the abs logical / physical path) |
crawlers::ruby_crawler::tests::loaded_manifest_follows_a_symlinked_spelling_of_the_project |
FAILED (panicked at ruby_crawler.rs:3769) | ok |
guard: symlinked root Gemfile file stays another manifest |
a_manifest_the_roots_gemfile_links_to_is_still_another_manifest |
ok | ok |
| guard: memory view stays lexical | the_lexical_variants_never_read_this_hosts_directories |
n/a (new API) | ok |
Local runs on 0528f9f:
cargo fmt --all -- --check: cleancargo clippy --workspace --all-features -- -D warnings: cleancargo test -p socket-patch-cli --all-features --test e2e_redirect_gem_build --test e2e_vendor_gem_build -- --ignored (Ruby 3.3.6, Bundler 4.0.18): 29 + 8 passedcargo test --workspace --all-features --no-fail-fast: all gem tests pass. 13 tests fail only in this sandbox and are unrelated: chmod-based write-failure tests (covgap_commands_vendor, in_process_redirect, repair, 4 core lib tests) because the sandbox runs as uid 0, and e2e_bun_lockb::binary_shared_bundled_record_hosted_pin_is_managed because patches-api.socket.dev is unreachable here. CI runs them as a normal user with network.Fixed: in-memory views now compare lexically; directory identity uses
same_file instead of canonical path strings (covers bind mounts and
junctions) and is checked once per classify instead of per candidate.
Not changed:
hatch_env::same_path is a different (canonicalize) helper; this fixsame_file dependency instead, so there isGemfile named lexically was already Configured).No wrapper (npm/, pypi/, gem/) changes: they only dispatch to the binary.
🤖 Generated with Claude Code
Generated by Claude Code
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Assisted-by: Claude Code:claude-opus-5-5
A project reached through a symlinked directory (macOS /tmp, a symlinked workspace) had BUNDLE_GEMFILE=$PWD/Gemfile, or the same path in .bundle/config, refused as "another manifest". Hosted scan, vendored mode, vex and rollback then refused a correctly configured project. Bundler expands the setting lexically and opens it through the OS, so compare the file name lexically and the directory by resolved identity. The same applies to BUNDLE_LOCKFILE and to deciding whether the env value keeps Bundler's root. A root Gemfile that itself links elsewhere stays distinct, since Bundler's root follows the spelled directory. Fixes #896 Assisted-by: Claude Code:claude-opus-5-5
Address review of the symlink fix: decide directory identity with same-file (device and inode) so a bind mount or Windows junction also counts, check it once per classify, and keep an in-memory project's paths lexical so the host's own directories never decide its verdict. Refs #896 Assisted-by: Claude Code:claude-opus-5-5
|
BugBot review Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 0528f9f. Configure here.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Ready for review at
Generated by Claude Code |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
GemBUNDLE_GEMFILE check compares paths lexically, so a symlinked spelling of the project's own Gemfile (e.g. macOS /tmp/app/Gemfile) is refused, and vex / rollback reject the hosted patch Bundler is loading
There was an error while loading. Please reload this page.