Не мога да намеря начин S3 да работи с Spree. Изглежда, че има няколко скъпоценни камъни за това, но не изглежда да работят за мен.
Бягащи релси 3.1.1 със спрей 0.70.3.
Не мога да намеря начин S3 да работи с Spree. Изглежда, че има няколко скъпоценни камъни за това, но не изглежда да работят за мен.
Бягащи релси 3.1.1 със спрей 0.70.3.
Работя с rails 3.0.10 и spree 0.60 и успях да накарам spree да използва s3 хранилище вместо запис в публичната папка на приложението, като направя следното. Процесът трябва да е подобен.
добавете 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 акаунт, избрах да задам настройки по подразбиране.
след това ще трябва да замените модела на изображението или да направите декоратор за вашия, който казва на кламер да използва 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.
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
Можете също да изпробвате BitNami Spree AMI на http://bitnami.org/stack/spree. За разбирането.