我正在运行 rails 3.0.10 和 spree 0.60,并且能够通过执行以下操作来使用 s3 存储而不是写入应用程序的公用文件夹。过程应该是相似的。
将 aws-s3 gem 添加到您的 Gemfile
gem 'aws-s3'
安装包后,我在配置目录中创建了一个名为 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"
您可以根据需要为每个环境指定单独的凭据,但由于我的都使用相同的 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。