今天聽 Ruby Rouges podcast #045,
學了一些之前不懂的 bundler 小知識.
Dependency management 問題是 NP-Complete
Bundler,或任何 dependency management 軟件的算法,也是 NP-Complete 的問題。
Bundler 的工作其實是在所有 dependencies 的版本上搜尋能符合 Gemfile 內容的解。大部份情況 bundler 也可以很快找到答案,但有一些 Gemfile 會讓 bundler 停轉。雖然看上去像 bug,但實際上不是個 bundler 作者可以輕易解決的問題。
話雖如此,但其實有方法加快 bundler 的搜尋:在 Gemfile 的 dependencies 盡量指定你想要的版本。
例如這個 Gemfile