尝试使用paperclip和s3存储上传图像时出现以下错误。该应用程序在本地上传工作正常,但是当我进行必要的更改以使用s3时,我得到以下内容:
ImagesController中的NameError #create
未初始化的常量AWS :: S3 :: Base
的Gemfile
source 'http://rubygems.org'
gem 'rails', '3.1.3'
gem 'sqlite3'
group :assets do
gem 'sass-rails', '~> 3.1.5'
gem 'coffee-rails', '~> 3.1.1'
gem 'uglifier', '>= 1.0.3'
gem 'dynamic_form'
end
gem 'aws-sdk'
gem 'paperclip'
模型/ Image.rb
class Image < ActiveRecord::Base
has_attached_file :file,
:styles => {
:featured => "970x560>",
:thumb => "192x112>"
},
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/amazon_s3.yml"
end
配置/ amazon_s3.yml
bucket: myapp-dev
access_key_id: ####################
secret_access_key: ################################
捆绑的宝石: aws-sdk(1.2.5) 回形针(2.4.5) rails(3.1.3)
答案 0 :(得分:25)
Paperclip 2.4.5仍然使用aws-s3
宝石。 (Github上的README引用aws-sdk
,但这仅适用于未发布的主分支。)
将您的Gemfile行更改为:
gem "aws-s3", :require => "aws/s3"
或使用master分支而不是稳定版本(当然会涉及一些风险):
gem 'paperclip', :git => "git://github.com/thoughtbot/paperclip.git"
gem "aws-sdk"
更新:Paperclip 2.5.0,于2012年1月13日发布,现在使用aws-sdk
。
答案 1 :(得分:-2)
任何人决定杀死回形针给Windows用户做得很好。
捆绑安装
Fetching git://github.com/thoughtbot/paperclip.git
remote: Counting objects: 5602, done.
remote: Compressing objects: 100% (2419/2419), done.
remote: Total 5602 (delta 3868), reused 4704 (delta 3065)
Receiving objects: 100% (5602/5602), 855.88 KiB | 314 KiB/s, done.
Resolving deltas: 100% (3868/3868), done.
error: unable to create file test/fixtures/question?mark.png (Invalid argument)
所以检查出来的'paperclip',:git =&gt; “git://github.com/thoughtbot/paperclip.git”直接无法解决问题。 gem“aws-s3”,:require =&gt; “aws / s3”目前解决了这个问题,但它可能意味着暂不更新2.5.0