rake db:migrate 在开发 AWS Beanstalk 中运行

Posted

技术标签:

【中文标题】rake db:migrate 在开发 AWS Beanstalk 中运行【英文标题】:rake db:migrate runs in development AWS Beanstalk 【发布时间】:2015-08-14 02:13:29 【问题描述】:

我是 Beanstalk 的新手。我创建了一个 Rails 应用程序并将数据库生产配置设置为使用 AWS 希望提供的环境变量。我正在使用 mysql (mysql2 gem),并且想使用 RDS 和 Passenger(我没有偏好)。

在我的开发环境中,我可以使用本地 Mysql 运行 rails 应用程序(它只是我为实验创建的一个基本应用程序)。 我已将乘客 gem 添加到 Gemfile 并捆绑,但我仍在开发中使用 WEBBrick。

本书唯一没有做的是我没有使用“eb”,而是从控制台尝试。我的应用程序/环境无法运行,因为“rake db:migrate”它仍然认为我希望它连接到本地 Mysql(我从日志中猜想它不知道 RACK_ENV,因此使用了“开发”)。

任何提示?我当然可以尝试下一个“eb”,但更愿意使用控制台。

问候, 奥伦

【问题讨论】:

我也尝试过在 .ebextensions 下的 'myapp,config' 中使用 'eb' 以及 'RACK_ENV' 和 'RAILS_ENV'。我真的很困惑。没那么难,现在每个人都在使用 AWS,不是吗? 【参考方案1】:

我相信 Elastic Beanstalk 会自行运行“rake db:migrate”。确实,它似乎在尝试,但这是失败的。我把我的赏金给了'Yahs Hef',尽管我只会在今晚(英国)尝试。我对 AWS 的迷失使我忘记了这个简单的解决方案,即自己运行迁移。如果这本身不起作用,我将尽可能简化数据库配置。

【讨论】:

它有效。这是我的愚蠢。一旦我尝试自己运行迁移,我意识到我在 ' 【参考方案2】:

我建议你通过这个命令“eb ssh”进入EC2实例(第一次你需要指定你的.pem文件,如果你没有你可以在 IAM 服务 中创建)并检查您的日志以获取有关您的错误的更多信息。

如果您在上传代码(eb deploy)时遇到问题,您可以在此文件中找到日志:“/var/log/eb-activity.log”(请记住此文件位于您的 EC2 实例)

如果您的应用有问题,您可以阅读以下文件中的日志:“/var/app/support/logs/production.log”或“/var/ app/support/logs/passenger.log"

其他建议是安装 EB CLI 第 3 版。用于管理您的 eb 实例

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-install.html

【讨论】:

【参考方案3】:

你试过跑步吗

    bin/rake db:migrate RAILS_ENV=development

? 我遇到了同样的问题,这对我有用。

【讨论】:

不确定我是否关注。在哪里运行这个?为什么要开发? 在你的 cmd 和开发中,因为它是一个发展中的环境【参考方案4】:

在 Elastic Beanstalk(Web 控制台和 cli)中,您可以传递环境变量。如果您传递RAKE_ENV 变量,您将更改您的环境。

之后,您仍然需要传递不应硬编码到代码中的数据库参数(数据库密码、名称、...)。

【讨论】:

***.com/questions/7304576/…

以上是关于rake db:migrate 在开发 AWS Beanstalk 中运行的主要内容,如果未能解决你的问题,请参考以下文章

markdown rake db:reset,rake db:migrate:resetの违い

rake db:migrate不执行任何操作

在 Heroku 上执行 rake db:migrate 时出错

如何使用 rake db:migrate 仅回滚一步

如何运行 db:migrate 从另一个带参数的 rake 任务?

rake db:migrate db:reset 和 db:schema:load 之间的区别