Bundler揭秘

bundler

Bundler的作用和运行原理

首先你必须在你的项目根目录下声明一个叫做Gemfile的文件,Gemfile内容如下:

source 'https://rubygems.org'
gem 'rails', '4.1.0.rc2'
gem 'rack-cache'
gem 'nokogiri', '~> 1.6.1'

在这个文件中,申明 souce 'https://rubygems.org'告诉bundler默认情况下在https://rubygems.org中查找gem,如果你的gem部署在私有源中,你可以为这些gem重写默认源,可以参考参考下面格式:

source 'https://rubygems.org'
gem 'rails', '4.1.0.rc2'
gem 'rack-cache'
gem 'nokogiri', '~> 1.6.1'
source 'your private source' do
  gem 'your private gem'
end

接着需要声明几个依赖:

  • rails4.1.0.rc2版本
  • rack-cache的任意版本
  • nokogiri版本>=1.6.1并且 <1.7.0

声明完这些,你可以使用下面的命令来完成你的第一次依赖集成

$ bundle install    # 'bundle' is a shortcut for 'bundle install'

Bunder将会连接到rubygems.org(还有其他你在Gemfile中定义的源),找到满足您指定要求的所有必需gem列表。因为Gemfile中所有的gem都有自己的依赖项(其中一些依赖还有自己的依赖项,比如Gemfile中定义了gem A,A依赖了B,可能B还会依赖C),所以在上面的Gemfile上运行bundle install将会安装很多gem。

$ bundle install
Fetching gem metadata from https://rubygems.org/.........
Fetching additional metadata from https://rubygems.org/..
Resolving dependencies...
Using rake 10.3.1
Using json 1.8.1
Installing minitest 5.3.3
Installing i18n 0.6.9
Installing threadsafe 0.3.3
Installing builder 3.2.2
Installing rack 1.5.2
Installing erubis 2.7.0
Installing mime-types 1.25.1
Using bundler 1.6.2
Installing polyglot 0.3.4
Installing arel 5.0.1.20140414130214
Installing hike 1.2.3
Installing miniportile 0.5.3
Installing multi_json 1.9.3
Installing thor 0.19.1
Installing tilt 1.4.1
Installing tzinfo 1.1.0
Installing rack-test 0.6.2
Installing rack-cache 1.2
Installing treetop 1.4.15
Installing sprockets 2.12.1
Installing activesupport 4.1.0.rc2
Installing mail 2.5.4
Installing actionview 4.1.0.rc2
Installing activemodel 4.1.0.rc2
Installing actionpack 4.1.0.rc2
Installing activerecord 4.1.0.rc2
Installing actionmailer 4.1.0.rc2
Installing sprockets-rails 2.0.1
Installing railties 4.1.0.rc2
Installing rails 4.1.0.rc2
Installing nokogiri 1.6.1
Your bundle is complete!
Use bundle show [gemname] to see where a bundled gem is installed.

如果所需的所有gem都已经安装完毕,Bundler将会使用它们。所需的所有gem都在系统中安装完毕后,bundler会将其安装的所有gem和版本的快照写入Gemfile.lock文件。

设置应用程序使用Bundler


未完待续,原文https://bundler.io/v1.7/rationale.html

发表于 2019.04.17