关于 Bundler 的一些碎片

它通过管理 gems 的版本,为 ruby 项目提供一致的环境。

Gemfile

  1. 版本号
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

  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必须的文件和目录结构。

你可能感兴趣的:(关于 Bundler 的一些碎片)