今天听 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