LoginSignup
3
1

More than 1 year has passed since last update.

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

Last updated at Posted at 2018-08-12

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

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

Twitter

3
1
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
3
1