send_file
не записывает сам файл.Вместо этого он передает имя файла обратно на веб-сервер, который затем выполняет фактическую запись (так что ваше Rails-приложение загружается меньше).
Для достижения вашей цели вы можете прочитать файл и применить изменения в памяти.и затем используйте send_data
для записи данных клиенту:
buffer = File.read('x.foo')
buffer = apply_changes(buffer)
send_data(buffer, filename: 'y.bar')
Или вы можете записать изменения в новый файл и воспользоваться send_file
:
unless File.exist?('y.bar')
buffer = File.read('x.foo')
buffer = apply_changes(buffer)
File.write('y.bar', buffer)
end
send_file('y.bar')