🖥

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

2023/08/26に公開

$ 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オープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2018-07-19

Discussion