在简单的 ruby 应用中使用 Gemfile
在写一些稍复杂的脚本时,如果想使用一些 gem 包,但又不想将gem安装到系统目录中,该怎么做呢?下面将讲述如何在不使用任何框架的情况下,如何使用 bundle 来管理 gem 包。
创建一个文件,用来存放你的脚本及相关依赖
1
mkdir script
执行下面命令,初始化 Gemfile
1
bundle init
接下来,你就可以在 Gemfile 中像其他应用一样,引入你的依赖 gem
执行以下命令, 将 gem 安装到当前文件夹下的
vendor/bundle目录下1
bundle install --path=./vendor/bundle
在你脚本的中加入以下代码,即可使用 Gemfile 中的依赖 gem
1
2
3
4
5
6#!/usr/bin/env ruby
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __FILE__)
require 'bundler/setup'
Bundler.require(:default)
# 接下来就可以写你的应用代码了
这时直接使用依赖的 gem 就可以了,不需在使用前 require 了,
Bundler.require(:default)已经将 gem 引入了Bundler.require(:default)引入的是没有在group中的gemBundler.require(:test)表示仅引入名为test group中的gemBundler.require(:default,:test)表示引入没有group中的gem和test group中的gem
其他
有时候我写有多个 ruby 文件,在使用时需要一个一个地require,文件很多的时候通常很繁琐,我们可以通过一些方式,批量引入,例如批量引入当前文件夹下 lib 文件下的所有 ruby 文件。1
Dir[ File.expand_path('../dsl/search/queries/**/*.rb', __FILE__) ].each { |f| require f }
需要留意的是,如果lib文件夹的ruby文件又相互require,那么必须要确保被requrie的文件要提前引入