Move Bundler settings parsing out of ruby_crawler into formats/gem/settings.rs, and read .bundle/config keys with one parser (two drifted today)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 22/100
調査の方向性
Start with crates/socket-patch-core/src/crawlers/ruby_crawler.rs around bundle_config_setting_with and formats/gem/mirror.rs (config_key and the key loop), then compare how each reads .bundle/config lines. Step 1 is the parser move into formats/gem/settings.rs, which needs design choices about which key rules win. Done when formats/gem/* no longer imports crawlers::*, one key parser remains, and the ruby crawler, gem vendor, redirect and mirror tests pass.
索引モデルが issue の本文から書いたものです。
説明
[agent] Filed by the scheduled architecture audit (audit-core). Register: register.
Kind: refactor (placement plus a duplicated parser; extends E20/#833). Register ID: A57.
Problem
- Bundler settings logic lives in the crawler. About 1,260 lines of it sit in
crawlers/ruby_crawler.rsL1270-L2530:`` config scalar parsing and unquoting, the global and app config locations, the cache dir, the loaded manifest and lockfile, and the moved root. - Format modules import from that crawler.
formats/gem/manifest.rsL58 andformats/gem/mirror.rsL16 import fromcrawlers::ruby_crawler, and so dovendor/gem.rs,vendor/lock_inventory/gem.rs,vex/discover/gem.rs,hosted/engine.rs,patch/redirect/upstream/gem.rsand the CLI. - The
.bundle/configkey line is parsed twice, and the copies drifted:ruby_crawler::bundle_config_setting_withL2449-L2461 matchesKEY:as a plain prefix: it acceptsKEY:valuewith no space, does not decode quoted keys, and does not normalize legacy keys.formats/gem/mirror.rsL125-L230 (config_keyand the key loop) requires": ", decodes Bundler 4.1's quoted keys, and normalizes dot/dash keys.- The drift is latent for
BUNDLE_PATH/BUNDLE_GEMFILE/BUNDLE_LOCKFILE, because Bundler quotes only keys that contain:.
- The Gemfile/gems.rb manifest name list is written twice:
ruby_crawler.rsL276 andhosted/engine.rsL1167.formats/gem/mod.rsalready holdsBUNDLER_LOCKS.
Proposed change
This is a tracking issue; do the steps in order.
- Create
formats/gem/settings.rsand move the pure parsers there: the config-map parse (one key-line reader, followingmirror.rs's rules), unquote,bundler_truthy, and the tier rules from #1931. Also move aBUNDLER_MANIFEST_FILESconst there. - Leave only file and env I/O in the crawler, as a
BundlerEnv::ambient()snapshot that replaces the 4 copies of the ambient-env tuple (L47, L169, L591, L670). - Repoint the
formats/gem,vendor,vex,hostedand redirect imports.
Size
About 10 files; mostly moves (~1,000 lines moved, ~−80 net).
Acceptance criteria
- Behavior is unchanged: the ruby crawler, gem vendor, gem redirect and mirror tests pass.
formats/gem/*no longer importscrawlers::*.- One
.bundle/configkey parser remains.
- 主要言語
- Rust
- スター
- 8
- フォーク
- 2
- 平均マージ
- 19時間 24分
- マージ済み PR(30日)
- 669
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
SocketDev/socket-patch のほかの issue
-
agent:triaged arch-audit priority:p3 refactor
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
SocketDev/socket-patch#1860 ·
メンテナーはふだん 1 日以内に返信
-
agent:triaged arch-audit priority:p3 refactor
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
SocketDev/socket-patch#1838 ·
メンテナーはふだん 1 日以内に返信
-
Vendored npm rollback / remove / vendor --revert on a lockfileVersion 2 lock fail after any `npm install`, yet half-revert the lock: `packages` goes back to the registry while the legacy mirror keeps the patched integrity, and npm 6 then fails EINTEGRITY対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンbug bughunt pm:npm
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
SocketDev/socket-patch#1937 ·
メンテナーはふだん 1 日以内に返信
-
arch-audit bug
難易度 3/5 半日 初心者へのやさしさ 55/100
SocketDev/socket-patch#1934 ·
メンテナーはふだん 1 日以内に返信
-
arch-audit bug
難易度 3/5 1〜2日 初心者へのやさしさ 50/100
SocketDev/socket-patch#1933 ·
メンテナーはふだん 1 日以内に返信
SocketDev/socket-patch の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
longbridge/nsh#804 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
devex good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
calcit-lang/calcit#2538 ·
メンテナーはふだん 1 日以内に返信