它通过管理 gems 的版本,为 ruby 项目提供一致的环境。
Gemfile
- 版本号
gem 'nokogiri'
gem 'rails', '5.0.0'
gem 'rack', '>=1.0'
gem 'thin', '~>1.1'
'~>1.1'
的意思是 >=1.1 < 2.0
,~> 2.0.3
的意思是 >= 2.0.3 < 2.1
- 指定源
source 'https://gems.example.com' do
gem 'my_gem', '1.0'
gem 'another_gem', '1.2.1'
end
Git也可以作为一个源
gem 'nokogiri', :git => 'https://github.com/tenderlove/nokogiri.git', :branch => '1.4'
直接从本地目录安装没打包的gem
gem 'extracted_library', :path => './vendor/extracted_library'
从本地安装gem
path 'components' do
gem 'admin_ui'
gem 'public_ui'
end
指定group
gem 'wirble', :group => :development
gem 'debugger', :group => [:development, :test]
group :test do
gem 'rspec'
end
Bundle install
可以添加标志,下次再执行该命令自动使用最近一次的标志。该命令会自动将标志保存到配置文件里面~/.bundle/config
,可以使用bundle config
查看,也可用vim ~/.bundle/config
编辑。要删除该标志可用bundle config --delete without
。
bundle install --without production
bundle install --with production
Bundle setup & require
require 'bundler/setup'
用来添加gem及其依赖的加载路径$LOAD_PATH
。
Bundler.require(:default)
用来批量的require一个组,也可以单独用require ‘nokogiri’
。
require 'rubygems'
require 'bundler/setup'
require 'nokogiri'
# 或者只设置 default, ci 组的路径
require 'rubygems'
require 'bundler'
Bundler.setup(:default, :ci)
require 'nokogiri'
Bundle exec
bundle exec rspec spec/models
用来执行 bundle
安装的 gem 的可执行文件,如果不想每次都敲 bundle exec
可以使用bundle install --binstubs
,这样可执行文件都安装到了bin
目录下,使用bin/rspec spec/models
执行。有时如果gem系统路径装了某个Gem,并且没有和bundle冲突,这是不用bundle exec
是可以执行的,但是并不可靠,最好还是通过bundle exec
执行。
创建 Gem
bundle gem
通过bundle创建Gem可以方便的生成Gem必须的文件和目录结构。
网友评论