我需要在Amazon S3上配置我的图像,但是当我尝试在 Spree 版本 2-2-stable 下执行此操作时,我意识到此配置是离开了管理面板。
我在某处读到这个配置会产生一些问题,因此它在2-2上删除了。但我认为功能仍在以某种方式工作。
当我尝试将这些配置添加到我的 config / initialize / spree.rb 时,我收到错误,因为这些首选项不再存在。
preference :s3_access_key, :string
preference :s3_bucket, :string
preference :s3_secret, :string
这些偏好在2-1稳定但不在2-2稳定
上找到https://github.com/spree/spree/blob/2-1-stable/core/app/models/spree/app_configuration.rb https://github.com/spree/spree/blob/2-2-stable/core/app/models/spree/app_configuration.rb
有什么方法可以让它与Heroku一起使用吗?
答案 0 :(得分:6)
这是Spree提交的更改以及有关如何进行配置更改的一些说明。 https://github.com/spree/spree/commit/b1d6c5e4b9801d888cc76c05116b814945122207
我的理解是你仍然可以使用paperclip管理上传到S3,我已经使用他们的指令成功完成了上传。但是,我在S3上获取正确配置的保存路径时遇到了问题。这可能会让你开始...在环境配置文件中添加以下内容:
# Paperclip configs
config.paperclip_defaults = {
:storage => :s3,
:bucket => ENV['S3_BUCKET_NAME'],
:s3_credentials => {
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
}
}
我将环境变量用于S3凭据,因此您的很可能会有所不同。这段代码已经使上传文件到S3工作了,就像我说的那样我只是不能强制上传特定的文件路径。希望有所帮助。
编辑 - 附加信息:
我在spree.rb初始化程序中添加了以下内容,以定义自定义上传路径和自定义网址路径。
# S3 upload path and url path configuration
Spree::Image.attachment_definitions[:attachment][:path] = 'products/:id/:style/:basename.:extension'
Spree::Image.attachment_definitions[:attachment][:url] = 'products/:id/:style/:basename.:extension'
要更改默认上传大小,您可以覆盖Spree图像装饰器模型。因此,在app / models下添加一个spree目录并添加一个名为image_decorator.rb的文件。然后,您可以使用以下内容控制尺寸:
Spree::Image.class_eval do
attachment_definitions[:attachment][:styles] = {
:mini => '48x48>', # thumbs under image
:small => '350x700>', # images on category view
:product => '1024x768>', # full product image
:large => '600x600>' # light box image
}
end
查看此页面了解具体信息 - > http://guides.spreecommerce.com/developer/logic.html
总而言之,您可以通过更新环境初始化程序,Spree初始化程序和覆盖spree image_decorator模型来执行所有常规映像/ S3配置。