小さな Ruby スクリプトを試すのに irb は便利ですが、少し長いプログラムになるとエディターを使いたくなるときがあります。ホームディレクトリーに .irbrc を記述することで、irb にプログラムを編修するための edit コマンドと、それを実行するための run コマンドを追加することができます。
後述のリストをホームディレクトリに ~/.irbrc として作成すると、edit や run の他にも、ls や less "filename" のように irb からシェルコマンドもどきを使えます。もどきと言ったのは引数を cp "file_from file_to" のように引用符で囲む必要があるからです。導入できるコマンドは、edit, new, vi, run, ruby, ls, pwd, cd, mkdir, cat, less, cp, mv, rm です。
使い方は次のようになります。.irbrc をホームディレクトリに作成した後、 irb を起動すると、拡張コマンドがインストールされます。
$ irb
irb(main):001:0> edit
ここで vi を使って次のプログラムを入力します。
total = 0
for i in 1..10
total += i
end
puts total
ここで vi を終了して irb のコンソールに戻ります。
irb(main):002:0> run
55
true
irb(main):003:0> new
ここで vi を使って先のプログラムを次のプログラムに書き換えます。
ARGV.each{|arg| puts arg}
ここで vi を終了して irb のプロンプトに戻ります。
irb(main):004:0> run "A B C"
A
B
C
true
また、次のように bash で作業をしている感覚で操作できます。ただし、コマンドの引数は引用符で囲む必要があります。
irb(main):005:0> vi "sample.rb"
true
irb(main):006:0> cat "sample.rb"
print "what is your name? > "
name = gets.chop
puts "Hello, #{name}."
true
irb(main):007:0> ruby "sample.rb"
what is your name? > Dolly
Hello, Dolly
true
irb(main):008:0> cp "sample.rb sample2.rb"
true
irb(main):009:0> ls
sample.rb sample2.rb
true
Ruby ではこのように既存のプログラムの仕様を簡単に変更できてしまうので一度 Ruby でプログラムを作ると他の言語を使う気がしなくなります。危険な徴候です。
#
# edit commands
#
def edit
system "vi ~/.temp.rb"
end
def new
system "rm ~/.temp.rb; vi ~/.temp.rb"
end
def vi(arg)
system "vi #{arg}"
end
#
# run commands
#
def run(*arg)
system "ruby ~/.temp.rb #{arg.to_s}"
end
def ruby(arg)
system "ruby #{arg}"
end
#
# directory commands
#
def ls(*args)
system "ls #{args.to_s}"
end
def pwd
Dir::pwd
end
def cd(arg)
Dir::chdir(arg)
end
def mkdir(arg)
Dir::mkdir(arg)
end
#
# file commnads
#
def cat(arg)
system "cat #{arg}"
end
def less(arg)
system "less #{arg}"
end
def cp(arg)
system "cp #{arg}"
end
def mv(arg)
system "mv #{arg}"
end
def rm(arg)
system "rm #{arg}"
end
irbrc.txtはここを右クリックするとダウンロードできます。cp irbrc.txt ~/.irbrc でホームディレクトリにコピーして下さい。