Gemfile:
创业板‘’
创业板'aws-s3‘
在调用删除视频时,在视频模型中也调用此方法:
def remove_encoded_video
unless output_url.blank?
AWS::S3.new(
:access_key_id => zencoder_setting["s3_output"]["access_key_id"],
:secret_access_key => zencoder_setting["s3_output"]["secret_access_key"]
)
AWS::S3::S3Object.delete(File.basename(output_url), zencoder_setting["s3_output"]["bucket"])
AWS::S3::S3Object.delete("/thumbnails_#{self.id}/frame_0000.png", zencoder_setting["s3_output"]["bucket"])
end
end这两项:
AWS::S3::S3Object.delete(File.basename(output_url), zencoder_setting["s3_output"]["bucket"])
AWS::S3::S3Object.delete("/thumbnails_#{self.id}/frame_0000.png", zencoder_setting["s3_output"]["bucket"])引起的
NoMethodError in VideosController#destroy
AWS::S3::S3Object:Class的未定义方法“删除”
发布于 2013-11-18 03:57:30
我不相信这两个宝石‘aws’和'aws-s3‘是兼容的。你应该只使用其中之一。
AWS::S3::S3Object的AWS版本在类级别上没有delete方法,仅在实例级别。因此,您需要首先创建S3Object,然后使用‘aws’调用S3Object上的delete。
假设您的代码是从aws-s3的文档中提取的,如果您将gem 'aws-sdk'从Gemfile中删除并重新打包,它可能会工作。当然,如果您在其他地方使用‘aws’,这可能会破坏应用程序中的其他代码。
更新:
您可以获得并删除S3Object,如下所示:
s3 = AWS::S3.new(:access_key_id => '...',
:secret_access_key => '...')
bucket = s3.buckets[bucket_name]
object = bucket.objects[key]
object.delete其中,bucket_name是桶的名称,其中键是要删除的对象的键。
https://stackoverflow.com/questions/20039002
复制相似问题