🖥

Rubyで独自コマンドを作ってみよう ( コマンドはバイナリじゃなきゃ駄目って誰が決めたんだ? )

2023/08/26に公開

なんとなく無意識に「コマンドというとバイナリ」というイメージがあったが、自分の環境で実行できるものなら、スクリプトでもコマンドを作れる。

  • $PATH のディレクトリの中にスクリプトを置く
  • Shebang を書く
  • 実行権限を付ける

これだけでOK。

コマンド引数を表示するだけのRubyスクリプト。

/usr/local/bin/ruby-echo
#!/usr/bin/env ruby

ARGV.each do |argv|
  puts argv
end

実行権限を付与

$ chmod +x /usr/local/bin/ruby-echo

コマンド実行

動くでしょ。

$ ruby-echo Are you happy hacking

Are
you
happy
hacking

Ruby gem

ところで Ruby gem をインストールすると一緒にコマンドも入るタイプのものがあるが、これもRubyスクリプトで書かれているものがあったりする。

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

Ruby on Rails

何を隠そう Ruby on Rails で bin に入っているコマンド群も Ruby スクリプトだったりする。

bin のコマンド=バイナリでしょと思い込んで、途中まで中身を読んだことさえなかったので、rubyスクリプトだと知った時には驚いた。

#!/usr/bin/env ruby
begin
  load File.expand_path('../spring', __FILE__)
rescue LoadError => e
  raise unless e.message.include?('spring')
end
APP_PATH = File.expand_path('../config/application', __dir__)
require_relative '../config/boot'
require 'rails/commands'

( Rails 5.2.1 )

環境

  • ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]
  • Mac OS X High Sierra

関連

チャットメンバー募集

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

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

Twitter

https://twitter.com/YumaInaura

公開日時

2018-08-12

Discussion