Я использую Paperclip (с Amazon s3) в Rails 3. Я хочу прикрепить новый файл к моей модели без замены старого файла. Я не хочу, чтобы старый файл был доступен, я только хочу, чтобы он был там на s3 в качестве резервной копии.
Вы знаете, есть ли способ заставить скрепку ухаживать за ней, сама?
в post.rb у меня есть:
has_attached_file :sound,
:storage => :s3,
:s3_credentials => "....",
:styles => {:mp3 => {:format => :mp3}},
:processors => [:sound_processor],
:s3_host_alias => '....',
:bucket => '....',
:path => ":attachment/:id/:style/out.:extension",
:url => ":s3_alias_url"
и процессор выглядит следующим образом:
class Paperclip::SoundProcessor < Paperclip::Processor
def initialize file, options = {}, attachment = nil
super
@format = options[:format] || "mp3"
@current_format = File.extname(@file.path)
@basename = File.basename(@file.path, @current_format)
end
def make
src = @file
dst = Tempfile.new([@basename,".#{@format}"])
dst.binmode
cmd = "ffmpeg -y -ab 128k -t 600 -i #{File.expand_path(src.path)} #{File.expand_path(dst.path)}"
Paperclip.log(cmd)
out = `#{cmd}`
raise Paperclip::PaperclipError, "processor does not accept the given audio file" unless $?.exitstatus == 0
dst
end
end