通常、gemを使うには主に以下の2つの方法を使います。
-
gem install foo
でgemをインストールしてから使う - Gemfileにそのgemを記述し、
bundle install
でインストールしてから使う
どちらもせずに済ますには、bundler/inline
を使います。
bundler/inline
の使い方
以下はTimers gemを使うサンプルです。
timers.rb
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'timers'
end
timers = Timers::Group.new
every_five_seconds = timers.now_and_every(1) { puts "Hello!" }
loop { timers.wait }
このスクリプトは、Timersを使って1秒ごとに"Hello!"と表示するものです。実行前にgemコマンドもbundlerコマンドを使わず、いきなり、
$ ruby timers.rb
と入力すれば実行できます。
このスクリプトのポイントは1行目のrequire 'bundler/inline'
と、3行目からのgemfile
のdo〜endブロックです。require 'bundler/inline'
とすると、gemfile
というメソッドが使えるようになります。このgemfile
メソッドのブロックがGemfileの代わりになります。このブロックの2行でTimersが使えるようになります。
上記のサンプルではrequire 'timers'
を暗黙に実行しています。明示的にさせるようにするには以下のようにします。
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'timers', require: false
end
require 'timers'
timers = Timers::Group.new
every_five_seconds = timers.now_and_every(1) { puts "Hello!" }
loop { timers.wait }
5行目のrequire: false
によって、暗黙の読み込みをしないようにしています。そのため、8行目の require 'timers'
を削除して実行するとエラーになります。
参考