Asw*_*nan 4 ruby-on-rails amazon-s3 paperclip amazon-web-services
这是我第一次使用Paperclip和Amazon S3,我很确定我错过了一些明显的东西.如果有人可以指出它会很棒.
在S3存储桶中,我有2个文件夹,开发和生产,根据环境将图像上传到相应的文件夹.我尝试了这里提出的解决方案如下model.rb-
options = {}
if Rails.env.production?
options[:path] ||= 'production'
else
options[:path] ||= 'development'
end
has_attached_file :picture, options
Run Code Online (Sandbox Code Playgroud)
我不断收到一个名为development/production的文件上传到S3存储桶(如屏幕截图所示).

我甚至试过传递:path回形针的配置设置.同样的事情发生了 - 一个名为development/production的文件夹正在上传
我在这里错过了什么吗?我想做的就是,将我在开发环境中获得的图片上传到开发文件夹中,反之亦然.
path选项也需要指定文件模式.试试这个
has_attached_file :picture,
:storage => :s3,
:bucket => 'your_bucket',
:path => ":env_folder/:attachment/:id/:style/:filename.:extension"
# some other model code here ...
private
# interpolate in paperclip
Paperclip.interpolates :env_folder do |attachment, style|
Rails.env.production? ? 'production' : 'development'
end
Run Code Online (Sandbox Code Playgroud)
如果您只是将:path选项保留为"开发"或"生产",那么您告诉Paperclip文件的路径yourbucket/development就是您按照屏幕截图查看单个文件的原因.这就是为什么有一些东西可以唯一地识别:path选项中的资源(我:id在我的例子中使用了将使用模型的id属性).
如果你有选择权,我认为更好的方法是将环境分成他们自己的桶.换句话说,development环境将拥有自己的存储桶,并且production将拥有自己的独立存储桶.代码中不仅清洁,您还可以为每个桶/环境设置不同的策略,根据我的经验,一旦您的应用程序在生产中发布,就需要这些策略.希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
1535 次 |
| 最近记录: |