Ruby on rails Elastic beanstalk Rails-默认为生产环境,即使我设置了暂存环境

Ruby on rails Elastic beanstalk Rails-默认为生产环境,即使我设置了暂存环境,ruby-on-rails,deployment,amazon-web-services,amazon-elastic-beanstalk,Ruby On Rails,Deployment,Amazon Web Services,Amazon Elastic Beanstalk,我正在尝试使用elastic beanstalk提供rails应用程序的一个登台实例。我遵循文档并做了以下工作: eb init --environment staging eb start --environment staging 在此之后,我检查了.elasticbeanstalk/options设置是否仍然具有“生产”作为环境。我手动将其更新为staging,并尝试使用git aws.push命令 过了一段时间,一切都部署好了,但是,当我加载URL时,应用程序似乎仍然在使用所有的生产配

我正在尝试使用elastic beanstalk提供rails应用程序的一个登台实例。我遵循文档并做了以下工作:

eb init --environment staging
eb start --environment staging
在此之后,我检查了.elasticbeanstalk/options设置是否仍然具有“生产”作为环境。我手动将其更新为staging,并尝试使用git aws.push命令

过了一段时间,一切都部署好了,但是,当我加载URL时,应用程序似乎仍然在使用所有的生产配置,而不是登台。我是否遗漏了任何步骤?

ebCLI工具中的
--environment
开关并不是指Rails环境,而是指您尝试启动的Elastic Beanstalk环境。弹性Beanstalk环境是为部署的应用程序版本提供的一组资源。这与Rails/Rack环境不同,Rails/Rack环境只是一个用户定义的上下文,应用程序代码可以在单个机器上运行

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

当我使用而不是
eb
命令行时,在尝试部署
RAILS\u ENV:development
时,我发现
db:migrate
etc在开发环境中运行,但它仍然以生产模式启动服务器。要解决此问题,必须在选项设置中同时传入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——概要文件名(概要文件名将出现在.aws>config中)

2) 通过输入序列号,选择您想要的默认区域

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

4) 电子商务清单

5) eb用途(列表中的名称)

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

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

  • eb部署(在git转移之后)


你完了

设置机架环境和导轨环境有效。我用git(a和branch)检查了新的分支,每个分支都遵循上面的步骤,但需要使用“eb create”,而不是init。