Rails 3.1, скрепка, s3 - неинициализированная константа AWS:: S3:: Base
При попытке загрузить изображение с помощью хранилища paperclip и s3 я получаю следующую ошибку. Приложение работало нормально загружать локально, но когда я внес необходимые изменения для использования s3, я получаю следующее:
NameError в ImagesController # 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)
рельсы (3.1.3)
Ответы
Ответ 1
Paperclip 2.4.5 все еще использует драгоценный камень aws-s3
. (README на Github относится к aws-sdk
, но это только для неизданной ветки мастера).
Измените строку Gemfile на:
gem "aws-s3", :require => "aws/s3"
или используйте основную ветвь вместо стабильной версии (что, конечно же, связано с определенным риском):
gem 'paperclip', :git => "git://github.com/thoughtbot/paperclip.git"
gem "aws-sdk"
UPDATE: Paperclip 2.5.0, выпущенный 1/13/2012, теперь использует aws-sdk
.
Ответ 2
кто решил убить paperclip для пользователей 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)
поэтому проверка gem 'paperclip',: git = > "git://github.com/thoughtbot/paperclip.git" напрямую не решает проблему.
gem "aws-s3",: require = > "aws/s3" решает проблему на данный момент, но это, вероятно, означает, что обновление до версии 2.5.0 сейчас