2010-10-18 68 views
1

我正在構建一個適用於視頻的Rails應用程序。我正在使用一種編碼我的視頻的編碼服務,並將編碼的文件和一些縮略圖放在我的s3上的指定位置。我能夠通過AWS訪問視頻:S3像這樣:使用回形針和Amazon S3上的文件

AWS::S3::S3Object.find 'videos/36/base/video.mp4', 'my-bucket-name' 

-- or -- 

AWS::S3::S3Object.value 'videos/36/base/video.mp4', 'my-bucket-name' 

我想要做的是管理與回形針這些文件一旦我從我的編碼服務,編碼是完整的通知。不知道如何做到這一點。這是我到目前爲止:

class Encoding << ActiveRecord::Base 

    has_attached_file :video, 
       :url => ':s3_domain_url', 
       :path => 'videos/:video_id/:encoding_type/basename.:extension', 
       :storage => :s3, 
       :s3_credentials => {:access_key_id => AppConfig.s3.access_key_id, 
            :secret_access_key => AppConfig.s3.secret_access_key, 
            :bucket => AppConfig.s3.bucket 
       }, 
       :s3_permissions => 'authenticated-read', 
       :s3_protocol => 'http' 
end 

class Video << ActiveRecord::Base 
    def after_encoded 
    encoding = encodings.build 
    encoding.video = ## WHAT GOES HERE ?? 
    encoding.save 
    end 
end 

謝謝!真的很感謝你的幫助

- jonathan

回答

3

我想出瞭如何做到這一點。簡單地直接設置回形針屬性。所以我after_encoded方法看起來像這樣

def after_encoded 
    encoding = encodings.build 
    encoding.video_file_name = @video_details['url'].split('/').last 
    encoding.video_content_type = MIME::Types.type_for(encoding.video_file_name).to_s 
    encoding.video_file_size = @video_details['size'] 
    encoding.video_updated_at = Time.now 
    encoding.save 
    end 

偉大工程