Я пытаюсь преобразовать строки вложенного текстового файла с помощью процессора Paperclip в рельсах. Я могу проверить с помощью отладчика, что мой процессор вызывается, но прикрепленный файл является моим исходным файлом, а не файлом, написанным процессором. Вот мой процессор:Процессор Paperclip не меняет содержимое файла
module Paperclip
class Utf8 < Processor
def initialize(file, options={}, attachment=nil)
super
@file = file
@attachment = attachment
@current_format = File.extname(@file.path)
@format = options[:format]
@basename = File.basename(@file.path, @current_format)
end
def make
@file.rewind
tmp = Tempfile.new([@basename, @format])
IO.foreach(@file.path) do |line|
tmp << line.encode('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '')
end
tmp.flush
tmp
end
end
end
и вот моя модель:
class List < ActiveRecord::Base
has_attached_file :file,
storage: :s3,
s3_credentials: Rails.root.join('config', 'aws.yml'),
bucket: Rails.application.config.s3_bucket,
processors: [:utf8],
styles: {
utf8: {
format: 'txt'
}
}
end
Любая идея, что я делаю не так? Как я понимаю, файл, возвращенный из make, - это то, что скрепка прикрепляется к модели. Может ли s3 иметь к этому какое-нибудь отношение?
Может быть, это не ваш случай, но то, что скрепка в общем случае является сохранить исходное имя файла в базе данных и в зависимости от которые вы определяете, хранит разные версии в файловой системе. Оригинал плюс преобразования. Итак, то, что вы получаете как приложение, зависит от того, как вы отправляете его в браузер. В вашем случае вам, вероятно, нужно сообщить своему диспетчеру, как отправить файл. –
А, я вижу это сейчас. Каждый процессор сохраняет новую версию файла. Как мне отправить контроллер другим стилям? – mockaroodev