2016-04-11 4 views
0

ユーザーの回答を.TXTファイルにコンパイルして、別の場所に移動してすべての回答を保存します。私はそのファイルが置き換えられないように、ユーザーがアプリケーションを実行するたびに異なる名前を付ける必要があります。元の名前の隣にタイムスタンプを追加することを考えましたが、それをどうやって行うかわかりません。ちょうど作成された.TXTファイルの名前は毎回ファイル名が異なるようにします

マイコード:

require 'FileUtils' 

puts "1) How would you rate the manual? Range: 1-10." 
rating_range = gets.to_i 

puts "2) How could the manual be improved? Type your answer below:" 
improvement = gets.chomp 

puts "3) What would you add to the manual. Type your answer below:" 
addition = gets.chomp 

puts "4) Indicate any general comments you would like to add:" 
general_comments = gets.chomp 


File.open("Survey.txt", 'w') { |file| 
file << "1) #{rating_range}\n" 
file << "2) #{improvement}\n" 
file << "3) #{addition}\n" 
file << "4) #{general_comments}\n" 
} 
FileUtils.mv('/Documents/Survey.txt', '/Stuff') 

ファイルSurvey.txtは毎回違った名前を付ける必要があります。 アイデア

答えて

1

タイムスタンプは本当に一意であることは保証されていません。正確な複製が得られる可能性は低いですが、それでも可能です。あなたはファイルのソリューションを探しているなら、あなたはUUIDを使用することができます。もちろん

require 'securerandom' 
uuid = SecureRandom.uuid 
File.open("Survey-#{uuid}.txt", 'w') { |file| 
    ... 
} 

をより堅牢なソリューションのためには、データベースを使用しなければなりません。 :)

+0

ありがとうございました。私はファイルの名前に 'false'を付け加えました。私は間違って何をしていますか? –

+0

私は自分のコードに間違いがありました。私は、SecureRandom.uuidを呼び出す必要があったときに、uuid行に必要なものを持っていました。私は答えを編集しました。 – djsumdog

+0

ありがとう、それは今完璧に動作します。私が今できることはocraでコードをコンパイルすることです。私はいつものようにこのコマンドを使います: 'ocra * .rb'。コンパイルが開始され、エラーなく終了しますが、実行ファイルは生成されません。何か案は? –

0

これは、ファイル名にUNIXエポック秒単位で時間を追加します

File.open("Survey_" + Time.now.to_i.to_s + ".txt", 'w') { |file| 

File.open("Survey.txt", 'w') { |file| 

を交換してみてください。 Time.nowだけを使うとファイル名にコロンのような文字で終わるでしょう。これはファイルシステムによっては問題があります。

ファイルを区別したいのですか、タイムスタンプを読み込みする必要がありますか?

関連する問題