IRB でのデモを楽にする
.irbrc にかく
require "rubygems"
require "irb/completion"
require "wirble"
Wirble.init
Wirble.colorize
data = <<EOS.split(/\n/)
require "future"
class Foo
def omoi(n)
sleep n
n
end
end
f = Foo.new
f.omoi(1)
f.async.omoi(1); nil
r = f.async.omoi(5); nil
r
r = f.async.omoi(3); nil
r
omois = (1..5).map {|i|
f.async.omoi(i).async.tap { p [:ok, i] }
}; nil
EOS
Readline.completion_proc = proc {|word|
if word.empty?
[ data.shift ]
else
IRB::InputCompletor::CompletionProc.call(word)
end
}
Readline.completion_append_character = ""
Readline.completion_case_fold = trueこんな風にすると、行頭で [TAB] をおして [RET] をくりかえすことでシナリオを喋りながら進行でき、かつ結果がリアルタイムに表示され、必要であれば [TAB] を押さずにコードをはさめるのでライブデモに便利です。
といっても、やっぱライブデモはタイプも含めでデモな感じがするのでちょっと寂しい感じになるのは否めないのですが!