2010-06-17 78 views
13

我对Ruby/Rails很新,但是我正在看一下bundler并想知道它是如何工作的。你是否像正常的gem install XYZ一样安装了一套完整的宝石,然后使用Gemfile将这些宝石的某个子集用于特定应用程序?或者您是否通常不再安装宝石,只需将它们包含在Gemfile中,然后执行bundle install将它们全部包含在随后与您的应用程序一起使用的软件包中?捆绑机如何工作(一般)?

非常感谢您抽出宝贵时间回答这个问题,我对捆绑器的功能确切地有点困惑。

- MAP

+0

退房http://gembundler.com/如果您还没有。这是官方的捆绑商网站。 – x1a4 2010-06-17 01:53:30

回答

3

将bundler想象成包管理工具。

bundle help命令:

bundle install#安装当前的环境对系统

bundle package#锁,然后缓存所有的宝石为供应商/缓存

所以bundle install命令将安装所有的宝石到在Gemfile中列出的系统以及它们的依赖关系。如果以前没有安装宝石,它会从gemcutter repo中抓取宝石。 bundle package会将.gem文件缓存到您的应用程序供应商/缓存目录中。

先不需要运行gem install

+0

我知道我们不应该问在stackoverflow上的后续行动(根据FAQ),但我有一个扩展的问题。我真正想做的是在一台机器上管理多个rails和ruby版本。那么,我会使用RVM的gemsets,然后使用bundler作为我创建的每个RVM gemset的一部分,以便切换gemsets并使用它们的rails版本? – MAP 2010-06-17 15:32:49

+0

我还不确定它是如何工作的 - 它如何确保您运行的是正确版本的宝石,例如,当有多个宝石时? – Toybuilder 2012-05-16 00:58:51

+0

@Toybuilder您可以在Gemfile中指定您的Gem依赖关系。 Bundler完全解析了您的整个Gem依赖关系图并将其冻结在应用程序的Gemfile.lock中。您可以使用'bundle viz'实际查看图形。 – 2012-05-17 16:34:00