gpt4 book ai didi

ruby-on-rails - 用于临时应用程序与生产应用程序的不同 S3 存储桶

转载 作者:行者123 更新时间:2023-12-01 16:36:54 27 4
gpt4 key购买 nike

我有一个 Rails 应用程序,它使用 Amazon S3 来存储回形针附件。我的 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=product。不要使用 Rails 环境来区分应用程序的实例。相反,您的应用程序应该期望使用环境变量来配置特定于实例的方面。

关于ruby-on-rails - 用于临时应用程序与生产应用程序的不同 S3 存储桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7197725/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com