我运行的是一个临时和开发环境,它是生产数据库的镜像。
我使用Paperclip gem将上传内容存储到S3。我想让生产桶中的非生产READ环境(因为存储文件的位置),但为了安全起见,请写入另一个桶。此外,应用程序应该足够智能,现在可以从上传的不同存储桶中读取。
有没有办法实现这个目标?
答案 0 :(得分:0)
我实现这一点的方式是我有一个本地配置文件,与我使用Heroku托管我的应用程序的服务器上的配置不同。
1)我创建了一个名为 config / config.yml
的文件#S3
S3_KEY: 'xxxxxx'
S3_SECRET: 'xxxxxxxx'
S3_REGION: 'us-east-1'
S3_ASSET_URL: 'appname-dev.s3-website-us-east-1.amazonaws.com'
S3_BUCKET_NAME: 'appname-dev'
2)我将 config / config.ym 中的变量读入 config / application.rb 需要File.expand_path(' ../ boot', FILE )
require 'rails/all'
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(:default, Rails.env)
module Appname
class Application < Rails::Application
config.before_initialize do
dev = File.join(Rails.root, 'config', 'config.yml')
YAML.load(File.open(dev)).each do |key,value|
ENV[key.to_s] = value
end if File.exists?(dev)
end
end
end
然后在Heroku
我设置配置变量
我希望这能够提供帮助。
答案 1 :(得分:0)
在进一步挖掘之后,我发现bucket
的{{1}}选项可以进行过程。
has_attached_file
相关文件:
http://www.rubydoc.info/github/thoughtbot/paperclip/master/Paperclip/Storage/S3 http://www.rubydoc.info/github/thoughtbot/paperclip/master/Paperclip/Attachment#dirty%3F-instance_method