2012-05-05 20 views
1

我在寫一個測驗應用程序,幫助新來的Ruby語言的人們(比如我自己)學習Ruby。如何與Ruby語言測驗計劃的IRB交互?

我有興趣編寫一個程序,它將提示用戶提出問題,啓動交互式Ruby Shell(IRB)會話,設置前提條件,允許用戶與shell進行交互,然後檢查發佈條件查看用戶是否按照提示正確回答了問題。例如,可以提示用戶組合兩個包含一週中某幾天的數組。該shell會話將被啓動,並且前提條件將設置:

days1 = ["Mon", "Tue", "Wed"] 
days2 = ["Thu", "Fri", "Sat", "Sun"] 

,用戶可據此與外殼進行交互,並且大概會做這樣的事情:

days = days1 + days2 
=> ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] 

程序然後將評估發佈條件以驗證兩個陣列已合併。如果提示說明必須以特定的方式完成任務,那麼該程序可能還必須具體研究如何完成任務。

處理與IRB的交互的最佳方式是什麼?一個想法是使用Expect,但我想知道你是否有更好的方法或只涉及使用Ruby的方法。我不打算重新發明輪子,所以如果已經有了這樣的程序,我可以使用它來代替自定義開發。

+1

另請看http://rubykoans.com/ – Reactormonk

回答

0

你可以看看irb的替代品,pry。用撬你的任務對我來說更容易。

require 'pry' 

days = nil 
days1 = ["Mon", "Tue", "Wed"] 
days2 = ["Thu", "Fri", "Sat", "Sun"] 

binding.pry :quiet => true 

if days == (days1 + days2) 
    puts "Congratulations!!!" 
else 
    puts "You did something wrong" 
end 

與它唯一的問題是,結合命令自動調用WHEREAMI命令打印出綁定點的周圍的上下文。我還不知道如何取消它。固定,多虧了欄杆。

+1

use:'binding.pry:quiet => true'取消'whereami' – horseyguy