Я пропускаю проверку, которую вы делаете, чтобы увидеть, существует ли уже линия, и обычно идет что-то вроде этого (здесь я хочу заменить 'FOO' на 'BAR'):
full_path_to_read = File.expand_path('~/test1.txt')
full_path_to_write = File.expand_path('~/test2.txt')
File.open(full_path_to_read) do |source_file|
contents = source_file.read
contents.gsub!(/FOO/, 'BAR')
File.open(full_path_to_write, "w+") { |f| f.write(contents) }
end
Использование expand_path
также, вероятно, немного педантично, но мне это нравится, просто чтобы я случайно не забил какой-то файл, который не хотел.