以下文字部分整理自 RailsConf 2015 上 Andre Arko 的演讲: How does Bundler work, anyway?

require,历史的开端,1997

早在上个世纪,require filename方式就存在了.这让我们避免反复粘贴相同代码,在一定程度上解决了重复的问题.比如系统的标准库,require 一下就可以使用,多爽.可是很快,大家发现了新问题,只有纳入 ruby 的标准库中的文件才能这么用,我不是标准库的开发者,也想要这种方式,怎么办?

setup.rb,应运而生,2000

历史总是惊人的相似,当 UNIX 的三位一体( configure + make + make install )风靡全球的时候, ruby 版本的也出现了:

ruby setup.rb setup
ruby setup.rb config
ruby setup.rb install

功能类似,流程类似,看起来很不错是不是?很快大家又不满足了,这货没版本号啊…

RubyGems,爆炸式发展,2003

一键安装,一键拆卸,集中管理.整个 ruby 社区从此迎来快速发展.截至目前,RubyGems 累计有 12 万个 Gem ,下载安装 98 亿次!可是 rubyist 又不知足了,我们可是同时为多位客户服务的,每个客户版本不同,你让我怎么记住这么多 Gems 的版本?

Bundler,更进一步,2009

社区的力量是巨大的,当你遇到一个问题的时候,你不再孤单,有许许多多和你一样的兄弟帮你出谋划策.于是 Bundler 诞生了,版本冲突成为过去式.

展望

说实话除了 RubyGems 和 Bundler 合并以外,暂时没有其它想法.也许是因为现有工具已经比较好用了.但生活总是充满惊喜,让我们拭目以待吧!