RubyGemsで公開されていないgemを使う

自分が作ったgemをRubyGemsにアップする前に使ってみたい、諸事情でRubyGemsでは公開されていない*1、masterブランチのものを直接使いたい、などの理由でgem installでインストールできないgemを使いたい時がある。

今回はMarkdownパーサであるqiita-markdownを使ってみたかったので、このgemをサンプルに書いている。このgemはRubygemsに公開されているので、下記に書いてあるような手順を踏まなくてもふつうにgem installでインストールできる。

ソースコードはあらかじめvendor/以下でgit cloneしてある。

bundlerを使う

Bundlerを使うのが手っ取り早い。Gemfileにgemの名前、置いてある場所を書いてbundle installするだけ。

source "https://rubygems.org"

gem "qiita-markdown", path: "vendor/qiita-markdown", require: "qiita/markdown"

ソースコードの方は下記のようにrequire "bundler"してBundler.requireする。これだけでGemfileに書いてあるgemを呼び出してくれる。便利。

#!/usr/bin/env ruby

require "bundler"
Bundler.require

# ...

bundlerを使わない

なんとなくGemfileを書くのがだるい時がある。そういう時はソースコードから直接requireして済ませる。

大抵のgemはlib以下にrequireすべき対象のファイルが置いてあるため、このlibディレクトリをRuby$LOAD_PATHに追加したあと、通常通りrequireする。

#!/usr/bin/env ruby

$LOAD_PATH.unshift File.expand_path "vendor/qiita-markdown/lib"

require "qiita-markdown"

# ...

*1:社内だけで使っているgemなので公開できないなど