2011-10-20 9 views
1

Rubyスクリプトを実行するときにファイルを作成します。スクリプトが終了したら、デフォルトエディタまたはテキストエディタでファイルを開くようにスクリプトを設定するにはどうすればよいですか?作成したファイルを自動的に開くにはどうすればよいですか?

たとえば、「FooBar.txt」という名前のファイルを作成し、そこに読み込まれた一連の情報を取得します。後でそれをどのように開くことができますか?

これは本当に簡単だと確信していますが、それを検索するたびに、テキストを追加したりスクリプトで編集するためのファイルを開いています。私は実際にプログラムでファイルを開いているわけではありません。

答えて

1

システムコールを行うことができます。

これは、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)でした。

+0

ファイル名を使用する場合* ARGVはスクリプトを停止してもtxtファイルを開いたままにしますか?関数内で使用すると、ファイルを閉じるまでスクリプトが実行され続けます – milleruni

+0

popen3-variantを試しましたか?シェルから起動できるスクリプトを追加しました。そんなことを意味しますか? – knut

+0

open3がruby 1.8.7 - windowsではサポートされていないから、回避する方法を見つけることができますが、大変助けになりました。ありがとうございます。 – milleruni

関連する問題