21
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

gem install・bundle installなしでgemを使ったスクリプトを実行する方法

Last updated at Posted at 2018-06-16

通常、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'を削除して実行するとエラーになります。

参考

21
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?