Rubyでファイル内の単語を置換する

概要

私は Ruby を初めて使用しており、ファイル内の単語を置換しようとしています。そのコードは次のとおりです。

File.open("hello.txt").each do |li|
  if (li["install"])
  li ["install"] = "latest"
  puts "the goal state set to install, changed to latest"
  end
end

Puts 内のメッセージは一度出力されますが、そのファイルのその行の単語は「latest」に変わりません。誰かここで何が間違っているのか教えてもらえますか?ありがとう

解決策

ファイルに書き戻す必要もあります。引数を指定しない File.open は、読み取り用にファイルを開きます。これを試すことができます:

# load the file as a string
data = File.read("hello.txt") 
# globally substitute "install" for "latest"
filtered_data = data.gsub("install", "latest") 
# open the file for writing
File.open("hello.txt", "w") do |f|
  f.write(filtered_data)
end