2010-10-18 75 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 

伟大工程