Я использую rails 3.0.10 и spree 0.60 и смог заставить spree использовать хранилище s3 вместо записи в общую папку приложения, выполнив следующие действия. Процесс должен быть одинаковым.
add aws-s3 gem в ваш Gemfile
gem 'aws-s3'
установленный пакет, и после этого я создал файл yaml в каталоге конфигурации с именем s3.yml, и он должен выглядеть примерно так:
development: &DEFAULTS
bucket: "YOUR_BUCKET"
access_key_id: "YOUR_ACCESS_KEY"
secret_access_key: "YOUR_ACCESS_SECRET"
test:
<<: *DEFAULTS
bucket: "YOUR_BUCKET"
production:
<<: *DEFAULTS
bucket: "YOUR_BUCKET"
Вы можете указать индивидуальные учетные данные для каждой среды, если хотите, но так как у меня все используется один и тот же S3, я решил установить значения по умолчанию.
после этого вам придется переопределить модель изображения или создать декоратор дляваш, который указывает paperclip использовать S3 и чтобы он анализировал файл yaml, созданный для учетных данных.
область, которую вы хотите переопределить, будет такой
has_attached_file :attachment,
:styles => {:mini => '48x48>', :small => '200x100>', :product => '240x240>', :large => '600x600>'},
:default_style => :small,
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:url => "/assets/products/:id/:style/:basename.:extension",
:path => ":rails_root/public/assets/products/:id/:style/:basename.:extension"
, вы можете изменить эти свойства какнеобходимо, но важно то, что вы указываете: хранилище и: s3_credentials.