5.1管理依赖关系的工具Bundler的介绍

1.Bundler是什么?

Bundler通过跟踪和安装所需的gem包依赖以及gem包版本,为Ruby项目提供了一致的环境。

Bundler让程序员从复杂的依赖环境中脱身而出,它确保您所需的gems包出现在开发,暂存和生产中。开始一个项目的工作很简单bundle install

2.安装Bundler

安装Bundler之前需要已经安装了Ruby 和RubyGems

Bundler入门很容易!打开一个终端窗口并运行以下命令就安装好了Bundler:

gem install bundler

在项目根目录的Gemfile中指定依赖项:

#gemfile
source 'https://rubygems.org'
gem 'nokogiri'
gem 'rack', '~> 2.0.1'
gem 'rspec'

3.工作流程

#gemfile
source 'https://rubygems.org'

gem 'rails', '4.1.0.rc2'
gem 'rack-cache'
gem 'nokogiri', '~> 1.6.1'

Gemfile说了几件事。首先,它表示Bundler应默认查找Gemfile中声明的gem包源地址 https://rubygems.org。如果某些gem包需要从私有gem包源服务器中获取,则可以将这些gem包的默认源替换。

接下来,您声明一些依赖项:

  • 安装版本4.1.0.rc2rails
  • 安装任何版本的 rack-cache
  • 安装nokogiri包的版本>= 1.6.1,但< 1.7.0

在声明了第一组依赖关系之后,您告诉Bundler程序去获取它们:

$ bundle install    #  'bundle install'可以简写为'bundle'

Bundler将连接rubygems.org(以及您声明的任何其他来源),并找到满足您指定要求的所有必需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 thread_safe 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 mini_portile 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

4.gem与bundler的区别

gem可以安装gem包,bundle也可以安装gem包,为什么有两个gem包安装管理工具呢?之间有区别吗?

比如说,咱们首先用gem安装rails,但是rails这个包依赖了很多其他的包,所以这个时候bundler就协助安装rails的依赖包,所以gem是安装卸载gem包的工具,而bundler是处理gem包关系的工具,两者虽都可安装gem包,但功能并不重复。

5.bundler与bundle的区别

bundler是工具的名称,bundle是bundler的简写。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/ruby/rubybasic/1825.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注