9
5

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 1 year has passed since last update.

Ruby — 自作 gem の実行コマンドを作る手順

Last updated at Posted at 2018-07-19

$ bundle gem yourgem で作成したディレクトリ内で作業する前提。

$ cd /path/to/yourgem

exe ディレクトリに Ruby ファイルを作って実行権限をつける

$ mkdir exe
$ touch exe/yourgem
$ chmod +x exe/yourgem

実行ファイルを置く場所は gemspec の指定に準じる。

  spec.bindir        = "exe"
  spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }

Rubyファイルの中身

バイナリではなくRubyスクリプトをコマンド化させる。

/path/to/yourgem/exe/yourgem
#!/usr/bin/env ruby

require 'yourgem'

puts Yourgem.to_s

「ユーザーの環境にRubyが入ってなかったらどうするの?」という考えが0.1秒頭をよぎったが、
gem 使うユーザーは全員Rubyインストールしてるよね。

なのでRubyスクリプトがコマンドで何の問題もないのだ。

gemをビルド

gem 専用の rake タスクで build する。

$ bundle exec rake build

yourgem 0.1.0 built to pkg/yourgem-0.1.0.gem.

ビルドした gem をインストール

gem の素の環境にインストールする。

$ gem install pkg/yourgem-0.1.0.gem

( bundle exec rake install では素のコマンドは入らない様子 )

ビルドなしで直接実行する場合

bundle exec ruby exe/yourgem

実行可能なコマンドが爆誕

当たり前だが gem のディレクトリにいるかどうかなど関係ない。

$ yourgem
Yourgem

ここらへんに入っていたりする。

$ which yourgem
/Users/yuma/.rbenv/shims/s2m

環境

  • gem 2.7.6
  • Bundler version 1.16.2
  • ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]

あわせて読みたいと思う魔法をあなたにかけました

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

Twitter

9
5
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
9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?