ruby 1.8.6
rails 2.2.2
attachment_fu - not sure (it's vendorized), but last entry in CHANGELOG is "Apr 17 2008"
aws-s3 (0.6.3)
aws-sdk (2.1.13)
aws-sdk-core (2.1.13)
aws-sdk-resources (2.1.13)
У меня есть модель, которая использует attachment_fu
так:
has_attachment :storage => :s3,
:path_prefix => "vip_uploads#{("_"+RAILS_ENV) if RAILS_ENV != "production"}",
:max_size => 100.megabytes,
:processor => :mp3
s3 вещи все настроено отлично - если я удалю опцию processor
, тогда загрузка в s3 будет работать.
Мой mp3 процессор, который преобразует WAV файлы в MP3, выглядит следующим образом:
module Technoweenie # :nodoc:
module AttachmentFu # :nodoc:
module Processors
module Mp3Processor
def self.included(base)
base.send :extend, ClassMethods
base.alias_method_chain :process_attachment, :processing
end
module ClassMethods
end
protected
def process_attachment_with_processing
self.convert_to_mp3
end
# Convert to mp3 and set some metadata
def convert_to_mp3(options={})
#do the conversion with ffmpeg
mp3_temp_path = "#{self.temp_path}.mp3"
cmd = "ffmpeg -i #{self.temp_path} -metadata title=\"#{self.filename.gsub("\.wav","")}\" -metadata artist=\"Vip Studio Sessions\" -metadata album=\"Uploads\" -vn -ar 44100 -ac 2 -ab 320k -f mp3 #{mp3_temp_path}"
`#{cmd}`
#copy this file back into temp_data
self.copy_to_temp_file(mp3_temp_path)
#update attributes
self.filename = self.filename.gsub(/\.wav$/,".mp3")
self.content_type = "audio/mpeg"
self.set_size_from_temp_path
end
end
end
end
end
Все вещи преобразования, кажется, работает, в том, что он делает новый mp3 файл в папке TMP, с имя файла сохранено в mp3_temp_path
, и оно делает запись в базе данных. Но по какой-то причине полученный файл затем не подталкивается к s3. У меня есть чувство, что мне просто нужно установить какой-либо помощник, чтобы сделать с temp_data или temp_file или что-то в этом роде. Я попробовал этот
self.temp_path = mp3_temp_path
и
self.temp_data = File.read(mp3_temp_path)
и
self.temp_path = write_to_temp_file(File.read(mp3_temp_path))
В настоящее время, как вы можете увидеть в моем коде, я пытаюсь это:
self.copy_to_temp_file(mp3_temp_path)
, но никто из них не работает. Эти попытки были основаны на поиске в ранее существовавших процессорах, например, для rmagick, и о том, что они делают. Они, кажется, делают то же самое, что и я, но поскольку все они посвящены thumbnailing, легко потерять что-то в переводе.
Может ли кто-нибудь увидеть, что мне не хватает? спасибо, Макс
Просто дикий удар в темном/случайном порядке ... Все эти https://github.com/technoweenie/attachment_fu/tree/master/lib/technoweenie/attachment_fu/процессоры имеют метод класса 'with_image'. .. вам нужен один из них для этого? –
Хм, я попробовал добавить метод класса with_image, который просто возвращает 'true', без изменений. –
Кроме того, 'with_image' вызывается методом' process_attachment_with_processing' в этих других процессорах, я не думаю, что в этом есть что-то особенное. –