Amazon S3和Spree设置

elk*_*o23 1 ruby-on-rails heroku amazon-s3 spree ruby-on-rails-3

无法找到S3与狂欢一起工作的方法.似乎存在很少的宝石,但似乎对我不起作用.

运行导轨3.1.1,大礼包0.70.3.

Jul*_*ina 9

我正在运行rails 3.0.10和spree 0.60并且能够通过执行以下操作来使用s3存储而不是写入应用程序的公共文件夹这个过程应该是相似的.

将aws-s3 gem添加到您的Gemfile中

gem 'aws-s3'
Run Code Online (Sandbox Code Playgroud)

bundle安装完成后,我在config目录中创建了一个名为s3.yml的yaml文件,看起来应该是这样的.

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"
Run Code Online (Sandbox Code Playgroud)

如果您愿意,可以为每个环境指定单独的凭据,但由于我的所有使用相同的S3 accont,我选择设置默认值.

之后你将不得不重写图像模型或为你做一个装饰器告诉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"
Run Code Online (Sandbox Code Playgroud)

您可以根据需要更改这些属性,但重要的是您指定:storage和:s3_credentials.