メモスクリプトを少し書いていて、実行してテストした後、ファイルに出力されません。何も変わらないので問題を解決します。ファイルは作成されますが、空のままです。Rubyはファイルに書き込みませんが、エラーは表示されません
require 'ruby-progressbar'
puts "Loading..."
lt = ProgressBar.create
if File.directory?("./memos") == false
lt.progress = 50
Dir.mkdir("memos")
lt.progress = 100
end
lt.progress = 100
Dir.chdir("memos")
puts "Welcome to Eternal Memorizer."
loop do
progress = ProgressBar.create
progress.log "Getting files..."
progress.progress = 50
cdf = Dir.glob("**/*")
progress.progress = 100
puts "Memos:"
puts cdf
puts ""
puts "[M]ake memo, [R]ead memo, [D]elete memo."
op = gets.chomp
if op.downcase == "m"
print "Memo name: "
nam = gets.chomp
puts "\nText, Press enter to finish:"
txt = gets.chomp
num = txt.length
txt = txt.split('')
ggg = ProgressBar.create(:title => "Saving...", :total => num)
o = File.open("#{nam}.mem", 'w+')
i = 0
ggg.log "Writing #{txt.join}"
num.times do
puts txt
#sleep(30)
o.write("#{txt[i]}")
i += 1
ggg.increment
ggg.title = "#{txt[i]}"
#system("cls"); system("clear")
end
elsif op.downcase == "r"
puts "Which memo to open?"
fil = gets.chomp
begin
fil = File.open("#{fil}", 'r+')
puts "\n-=-=-=-"
puts fil.read
puts "-=-=-=-\n"
rescue
puts "Err, unable to open file."
end
elsif op.downcase == "d"
puts "Which memo to delete?"
File.delete(gets.chomp)
end
end
私が読んで、それを再読み込み、そしてそれは私がそれをあきらめてポイントを打つだけですので、エラーが発見された場合、それは大きな助けになると思いました。
これらの変数名は、多くのものが必要です。なぜ彼らに3通の手紙を書いていることに夢中なのか?名前は最小限にする必要がありますが、説明的です。 'fil'のように' file'という文字が1文字だけ長いときは混乱します。 – tadman
また、 'case op.downcase'のように' case'を使い、単に 'm 'を使うのを学ぶべきです。同じことを繰り返してダウンケージするよりもずっと少ないコードで、ずっと効率的です。 – tadman