无法找到S3与spree一起工作的方法。似乎存在一些宝石,但似乎不适合我。
我正在运行rails 3.0.10和spree 0.60,并且能够通过执行以下操作来获得spree使用s3存储来写入应用程序的公共文件夹。
添加aws-s3 gem到你的Gemfile
gem 'aws-s3'
在安装了bundle之后,我在配置目录中创建了一个名为s3的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帐户,因此我选择设置默认值。
之后,您将不得不覆盖图像模型或为您的文件创建一个装饰器,它告诉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"
您可以根据需要更改这些属性,但重要的是您指定:storage和:s3_credentials。
在当前版本的Spree中,您可以在管理工具中设置这些值。但是,如果您希望在代码中维护它,但不重写Image模型,则可以在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
您也可以在http://bitnami.org/stack/spree上尝试BitNami Spree ami。问候。