小さな 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 でホームディレクトリにコピーして下さい。