加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 用于登台应用程序与生产应用程序的不同S3存储

发布时间:2020-12-17 04:21:44 所属栏目:百科 来源:网络整理
导读:我有一个使用Amazon S3存储Paperclip附件的Rails应用程序.我的 database.yml文件为开发,测试和生产指定了不同的S3存储桶. 我在Heroku上有两个应用程序 – 一个生产应用程序和一个“临时应用程序”,用于在平台预启动时测试代码. 目前的系统有一个重要的缺陷
我有一个使用Amazon S3存储Paperclip附件的Rails应用程序.我的 database.yml文件为开发,测试和生产指定了不同的S3存储桶.

我在Heroku上有两个应用程序 – 一个生产应用程序和一个“临时应用程序”,用于在平台预启动时测试代码.

目前的系统有一个重要的缺陷 – 它使用相同的S3桶进行分段和生产.如何设置我的系统以便它使用不同的存储桶,具体取决于我是否编写git push production master或git push staging master?

解决方法

Heroku允许您通过持久性环境变量配置您喜欢的任何内容,应用程序中的每个dyno /进程都可以使用.环境变量不在同一应用程序的登台版和生产版之间共享.利用这一点.
has_attached_file :photo,:styles => ...,:path => ...,:storage => :s3,:bucket => ENV['S3_BUCKET'],# <--- over here
  :s3_credentials => {
    :access_key_id => ENV['S3_KEY'],:secret_access_key => ENV['S3_SECRET']
  }

然后:

# Configure the "staging" instance
$heroku config:add 
    RACK_ENV=production 
    S3_KEY=my-staging-key 
    S3_SECRET=my-staging-secret 
    S3_BUCKET=my-staging-bucket 
    --app my-staging-app-name

# Configure the "production" instance
$heroku config:add 
    RACK_ENV=production 
    S3_KEY=my-production-key 
    S3_SECRET=my-production-secret 
    S3_BUCKET=my-production-bucket 
    --app my-production-app-name

请注意,您的应用程序的每个实例都有一个RACK_ENV = production.不要使用Rails环境来区分应用程序的实例.相反,您的应用程序应该期望使用环境变量来配置特定于实例的方面.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读