Content-Length: 53470 | pFad | http://sho.tdiary.net/20131128.html#p01

対話型のコンソールアプリをpryの上に構築したらだいぶ楽できた - ただのにっき(2013-11-28)
トップ «前日 最新 翌日» 編集
RSS feed

ただのにっき


2013-11-28(木) [長年日記]

対話型のコンソールアプリをpryの上に構築したらだいぶ楽できた

ゆえあってちょっとした対話型のアプリ、それもWebじゃなくてLinuxコンソールで動くものを作る必要が出てきた。入力をパースしたりするのも面倒だしなーと思い、ためしにpry上のDSLみたいな感じで作ってみたらなかなかいいものが簡単にできた。うん、これは楽でいいなぁ。今後も使おう。

こんな感じのsample.rbを書いて(2013-12-03追記: pryの仕様に合わせて一部リライト):

require 'pry'

# business logic
module Sample
   def self.hello(name)
      "Hello #{name}!"
   end
end

# helloというコマンドを定義する
Pry.commands.block_command 'hello' do |*args|
   args.map{|name| output.puts Sample.hello(name)}
end

# pry標準のhelpはあえて潰してよけいなものを見せない
Pry.commands.block_command 'help' do
   output.puts "hello [name...] : say hello"
end

# プロンプトをいじると専用アプリっぽさが増す
Pry.prompt = [
   proc{"sample> "},
   proc{"sample* "},
]

puts "type 'help' to help. type 'exit' to terminate.\n\n"
pry

実行する:

$ ruby sample.rb
type 'help' for help. type 'exit' for terminate.

sample> help
hello [name...] : say hello
sample> hello hoge
Hello hoge!
sample> hello foo "bar baz"
Hello foo!
Hello bar baz!
sample> exit
$

もちろんgemにして依存関係も解決するようにしておけば、導入も簡単になってさらに良い。

Tags: ruby pry

トップ «前日 最新 翌日» 編集
RSS feed








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://sho.tdiary.net/20131128.html#p01

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy