Rails 3.1,paperclip,s3 - 未初始化的常量AWS :: S3 :: Base

时间:2012-01-04 21:14:32

标签: ruby-on-rails paperclip

尝试使用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)

2 个答案:

答案 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