2014-01-19 9 views
5

次の例のようにRubyスクリプトを作成しました。私はそれが私が望むソリューションを出力するスクリプトを実行するとRuby:スクリプト実行後にコンソールを開いたままにする

# get input from the user 
input = gets.chomp 
# do awesome stuf with this input and print the response 
puts do_awesome_stuff(input) 

問題があるが、コンソールウィンドウは、右後閉じ:基本的な機能は同じです。私はコンソールを開いたままにしておきたい。 私は現在Windows上にありますが、ソリューションはすべてのシステムで動作している必要があります。

一つの方法はそうのように、.batファイルをRubyスクリプトを実行して、それを一時停止することです:

ruby script.rb 
PAUSE 

は、私は追加の.batファイルのない方法がある願っています。 RubyにはPASUEのような機能が組み込まれていますか?

答えて

7

ruby​​スクリプトファイルをダブルクリックしたようです。

代わりにcmdシェルで次のコマンドを発行してください。あなたはそれをしたくない場合は

ruby filename.rb 

、スクリプトの最後にgetsを追加することができます。

# get input from the user 
input = gets.chomp 
# do awesome stuf with this input and print the response 
puts do_awesome_stuff(input) 
gets # <---- 

しかし、あなたはCMDシェルまたはターミナルでコマンドを実行する場合は、余分な入力する必要があります。..ので、これはお勧めしませんシェルに戻るには、を入力します。

+0

私は、最後に「取得」するソリューションが好きです。私は "ENTERでスクリプトを終了する"のような文を追加します。その後、ユーザーは自分が何をすべきかを知っています。 – ph3nx

+0

@PascalGläser、途中で 'exit'を呼び出すと' gets'の解決策が動作しません。また、例外が発生した場合は動作しません。エラートレースバックは表示されません。 – falsetru

+0

@PascalGläser通常、他のコマンドラインプログラムは、ユーザーが終了する前に入力待ちを使用しません。これにより、あなたのプログラムを他のコマンドラインプログラムと組み合わせるのが難しくなります。 (リダイレクト、パイプなどのシェル機能について考えてみてください) – falsetru

関連する問題