弹性豆茎 Rails - 默认为生产环境,即使我设置了暂存环境



我正在尝试使用弹性豆柄提出一个 rails 应用程序的暂存实例。我按照文档做了以下操作:

eb init --environment staging
eb start --environment staging

在此之后,我检查了.elasticbeanstalk/optionsettings是否仍然将"生产"作为环境。我手动将其更新为暂存,并尝试了 git aws.push 命令。

一段时间后,一切都部署了,但是,当我加载 URL 时,应用程序似乎仍在使用所有生产配置而不是暂存。我错过了任何步骤吗?

eb CLI 工具中的--environment开关不是指 Rails 环境,而是指您尝试启动的 Elastic Beanstalk 环境。Elastic Beanstalk 环境是为已部署的应用程序版本配置的一组资源。这与 Rails/Rack 环境不同,后者只是用户定义的上下文,供应用程序代码在单个计算机上运行。

为了设置您的 Rails 环境,您需要在eb start后在.elasticbeanstalk/optionsettings文件中设置RACK_ENV(或RAILS_ENV)环境变量,然后调用eb update来触发这些环境变量的更新。或者,您可以通过 Elastic Beanstalk 控制台编辑您的 Elastic Beanstalk 环境配置;在正确的环境中单击"环境详细信息",在"概述"中单击"编辑配置",然后转到"容器"以调整环境变量(在这种情况下,您将编辑RACK_ENV字段)。

虽然我使用的是eb_deployer而不是eb命令行,但在尝试部署RAILS_ENV: development时,我发现db:migrate等在开发环境中运行,但它仍然在生产模式下启动服务器。 为了解决这个问题,在option_settings中同时传入RACK_ENV和RAILS_ENV是必要的:

[{
   namespace: 'aws:elasticbeanstalk:application:environment',
   option_name: 'RACK_ENV',
   value: "development"
 },
 {
   namespace: 'aws:elasticbeanstalk:application:environment',
   option_name: 'RAILS_ENV',
   value: "development"
 }]

以下是首次将应用程序部署到 elasticbeanstalk 的明确指南。

1) eb init --profile-name(profile名称将在.aws>配置中)

2)通过输入序列号根据需要选择默认区域。

3) 通过输入序列号来选择要使用的应用程序。

4) EB 列表

5) EB使用(列表中的名称)

6) EB状态(将为您提供状态)就是这样,您完成了初始化。现在,如果您想更改环境,只需使用以下命令。

  • EB setenv RACK_ENV=暂存(需要一段时间)。

  • EB 部署(在 Git 暂存之后)。

大功告成!!!