Настройка Amazon S3 и Spree

Не могу найти способ для S3 работать с весельем. Кажется, для этого существует несколько драгоценных камней, но, похоже, они не работают для меня.

Ходовые рельсы 3.1.1 с ходом 0.70.3.


person elkalto23    schedule 28.11.2011    source источник
comment
что ты уже испробовал? и с какими ошибками вы сталкиваетесь? Сказать, что это не работает, не поможет.   -  person leonardoborges    schedule 28.11.2011
comment
я попробовал следующий гем github.com/dylanmei/spree-s3.git, или также github.com/thoughtful/spree-s3.git На обоих я получаю объект не существует, когда я запускаю rake spree_s3:install   -  person elkalto23    schedule 28.11.2011


Ответы (3)


Я использую rails 3.0.10 и spree 0.60 и смог заставить spree использовать хранилище s3 вместо записи в общую папку приложения, выполнив следующие действия. Процесс должен быть одинаковым.

добавьте гем aws-s3 в свой 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, я решил установить значения по умолчанию.

после этого вам придется переопределить модель изображения или создать декоратор для вашего, который говорит скрепке использовать 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"

вы можете изменить эти свойства по мере необходимости, но важно указать :storage и :s3_credentials.

person Julio G Medina    schedule 10.12.2011
comment
Если вам случится обновить Spree до более новой версии, например 1.0.x, я бы порекомендовал вам изменить драгоценный камень с aws-s3 на aws-sdk, потому что предыдущий устарел. Еще один быстрый способ — использовать расширение spree-heroku github.com/joneslee85/spree-heroku. Если вы выберете Spree 1.1.x, вам не нужно устанавливать какое-либо расширение или переопределять модель, вы можете настроить это в настройках администратора. Надеюсь, это поможет. - person Trung Lê; 07.07.2012

В текущей версии Spree вы можете установить эти значения в инструментах администратора. Но если вы предпочитаете поддерживать его в коде, но не переопределяя модель изображения, вы можете установить эти значения в config/initializers/spree.rb. Не редактируйте их через административный портал.

S3_CONFIG = YAML.load_file("#{Rails.root}/config/s3.yml")[Rails.env]

Spree.config do |config|
  config.attachment_styles = ActiveSupport::JSON.encode({
        "mini" => "100x100>",
        "small" => "200x200>",
        "medium" => "400x600>",
        "product" => "400x600>",
        "large" => "600x600>",
        "xl" => "800x800>",
        "xxl" => "1200x1200>",

    })

   #AWS S3
  config.use_s3 = true
  config.s3_bucket = S3_CONFIG['bucket']
  config.s3_access_key = S3_CONFIG['access_key_id']
  config.s3_secret = S3_CONFIG['secret_access_key']
  config.attachment_url = 'products/:id/:style/:basename.:extension'
  config.attachment_path = 'products/:id/:style/:basename.:extension'
end
person Sunil Gowda    schedule 13.01.2013

Вы также можете попробовать AMI BitNami Spree по адресу http://bitnami.org/stack/spree. С Уважением.

person victor    schedule 05.02.2013