設定:
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 へのアップロードが機能します。
wav ファイルを mp3 に変換する私の 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_temp_path
に保存されたファイル名で tmp フォルダーに新しい mp3 ファイルを作成し、データベースにレコードを作成するという点で、すべての変換が機能しているようです。しかし、何らかの理由で、結果のファイルは 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 などの既存のプロセッサを調べて、それらが何をするかを確認することに基づいていました。彼らは私と同じことをしているように見えますが、それらはすべてサムネイルに関するものなので、翻訳で何かを失うのは簡単です.
誰かが私が欠けているものを見ることができますか? ありがとう、マックス