システムコールを行うことができます。
これは、Windowsでの例です。
filename = "the_list.txt"
File.open(filename, "w"){|file|
file << "Some data\n"
}
`call notepad #{filename}`
これは、指定したファイル名でメモ帳を呼び出します。
外部プログラムを呼び出すためのいくつかの亜種は、以下のとおりです。
`notepad #{filename}`
system("notepad #{filename}")
system("call notepad #{filename}")
%x{call notepad #{filename}}
あなたも、メモ帳を追加する必要はありません。
%x{call #{filename}}
これは、拡張子に割り当てられている主なアプリケーションに依存しますあなたが作成するファイルの
必要なシステムとエディタを指定すると、より詳細な情報が表示されます。
別の可能性:
require 'open3'
Open3.popen3("call #{filename}")
#or:
#Open3.popen3("call notepad #{filename}")
利点は、サブプロセスが終了するまで待機しないメインプログラムがあります。
スクリプトとしてのバリアント:次のコードを "file_build.rb"として保存します。
filename = ARGV.first
File.open(filename, "w"){|file|
file << "Some data\n"
}
require 'open3'
puts "Call Editor"
Open3.popen3("call notepad #{filename}")
puts "End of script"
file_build.rb test.txt
に電話をかけることができます。 test.txtが作成され、エディタが呼び出され、スクリプトが閉じます。エディタは動作し続けますが、少なくとも私のテストでは(WinXP)でした。
ファイル名を使用する場合* ARGVはスクリプトを停止してもtxtファイルを開いたままにしますか?関数内で使用すると、ファイルを閉じるまでスクリプトが実行され続けます – milleruni
popen3-variantを試しましたか?シェルから起動できるスクリプトを追加しました。そんなことを意味しますか? – knut
open3がruby 1.8.7 - windowsではサポートされていないから、回避する方法を見つけることができますが、大変助けになりました。ありがとうございます。 – milleruni