2016-04-03 68 views
0

我有一个rails 4应用程序。我试图在S3上为不同的重写上传器创建子文件夹系统。我尝试了下面的代码,但没有成功。没有上传到S3,也没有显示在应用程序中。rails S3子文件夹与重载

我错过了什么?

日志:

20:24:09 puma.1 | Started GET "/attachments/refile_caches_backend/presign?t=1459707849942.0" for ::1 at 2016-04-03 20:24:09 +0200 
20:24:10 puma.1 | Refile::App: [2016-04-03 20:24:10 +0200] GET "/refile_caches_backend/presign?t=1459707849942.0" 404 29.7ms 

refile.rb

require "refile/s3" 

aws = { 
    access_key_id: ENV['AWS_ACCESS_KEY_ID'], 
    secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'], 
    region: "us-east-1", 
    bucket: ENV['S3_BUCKET_NAME'] 
} 

message_files = aws.merge({bucket: "message_files"}) 
product_files = aws.merge({bucket: "product_files"}) 
refile_caches = aws.merge({bucket: "refile_caches"}) 

Refile.backends["message_files_backend"] = Refile::S3.new(prefix: "store", **message_files) 
Refile.backends["product_files_backend"] = Refile::S3.new(prefix: "store", **product_files) 
Refile.backends["refile_caches_backend"] = Refile::S3.new(max_size: 5.megabytes, prefix: "cache", **refile_caches) 
Refile.cdn_host = ENV['CLOUDFRONT_URL'] 

message.rb

class Message < ActiveRecord::Base 
    attachment :message_attachment, store: 'message_files_backend', cache: 'refile_caches_backend' ,extension: ["pdf", "doc", "docx", "xls", "xlsx", "html", "png", "img", "jpg"] 
end 

回答

0

我不知道为什么,但我不能配置与缓存Refile.backends,所以我只是把它保留下来,因为那部分似乎并不重要。

对于后端配置工作的存储,文件会上传到所需的子文件夹。

Refile.backends["message_files_backend"] = Refile::S3.new(prefix: "store/message_files", **aws) 
Refile.backends["product_files_backend"] = Refile::S3.new(prefix: "store/product_files", **aws) 
Refile.cache = Refile::S3.new(max_size: 5.megabytes, prefix: "cache", **aws) 

#in the model thanks to using the default cache it doesn't have to be defined 
class Message < ActiveRecord::Base 
    attachment :message_attachment, store: 'message_files_backend', extension: ["pdf", "doc", "docx", "xls", "xlsx", "html", "png", "img", "jpg"] 
end