Rails aws elastic beanstalk部署错误与数据库适配器
Posted
技术标签:
【中文标题】Rails aws elastic beanstalk部署错误与数据库适配器【英文标题】:Rails aws elastic beanstalk deploy error with database adapter 【发布时间】:2016-05-01 22:36:48 【问题描述】:在本文的指导下,我正在尝试将我的 rails 应用程序部署到 aws elastic beanstalk。
https://medium.com/@jatescher/how-to-set-up-a-rails-4-2-app-on-aws-with-elastic-beanstalk-and-postgresql-3f9f29c046e2#.tnssj8z0o
在开始“在 Rails 中使用 PostgreSQL”部分之前,我没有遇到任何问题。
在那部分,我按照 gemfile 修改,将 postgreSQL gem 添加到生产组,并将 sqlite3 gem 移动到开发和测试组,就像我做其他 rails 应用程序一样。
这样
group :development, :test do
# Before insert this group, sqlite3 gem code is in the default group. (Outside of development group)
gem 'sqlite3', '~> 1.3.10'
...other gems...
end
group :production do
gem 'pg', '~> 0.18.1'
end
在那之后,我$ bundle install
、$ git commit
和$ eb deploy
。但此时,EBS 会出现以下消息错误
错误:[实例:i-80ee5327] 命令在实例上失败。返回码: 1 输出:(截断)...sqlite3'` 到您的 Gemfile(并确保其 版本是 ActiveRecord 要求的最低版本)。
Gem::LoadError: sqlite3 不是捆绑包的一部分。将其添加到 Gemfile。
任务:TOP => db:migrate => db:load_config(通过运行查看完整跟踪 --trace 的任务)。
挂钩 /opt/elasticbeanstalk/hooks/appdeploy/pre/12_db_migration.sh 失败的。有关更多详细信息,请使用控制台检查 /var/log/eb-activity.log 或 EB CLI。
INFO:命令执行已在所有实例上完成。概括: [成功:0,失败:1]。
错误:对实例 ID“i-80ee5327”的命令执行不成功。 中止操作。
错误:无法部署应用程序。
通过阅读错误消息,我发现 aws 实例未加载 sqlite3 gem,因此我将 sqlite3 gem 代码发布到开发组之外。
gem 'sqlite3', '~> 1.3.10'
group :development, :test do
...other gems...
end
group :production do
gem 'pg', '~> 0.18.1'
end
之后,$ eb deploy
命令运行良好,服务器正常运行。
那么,我的问题是……为什么会出现这个问题?
在我看来,如果我像第二个版本一样制作 gemfile,sqlite3 适配器会在默认环境下加载,并且应该在生产环境中崩溃。但结果与我完全相反。这是非常烦人的情况,更重要的是,我怀疑我是否在做正确的解决方案。
请帮帮我...
这是我当前的环境变量。
RACK_ENV = development
SECRET_KEY_BASE = **********
RAILS_SKIP_MIGRATIONS = false
RAILS_SKIP_ASSET_COMPILATION = false
BUNDLE_WITHOUT = test:development
【问题讨论】:
config/database.yml 中有什么? 能否在生产环境下删除“ @jae555 我在修改代码并解释它时被扭曲了。写完这个问题后,我不断地与其他安装错误作斗争,现在我完全输了。这是令人讨厌的情况,但我只是忍受它....谢谢。 【参考方案1】:看来您正在开发模式下运行 beanstalk 服务器。确保在 beanstalk 中设置了以下环境变量:
RAILS_ENV=production
RACK_ENV=production
【讨论】:
问题解决了!您的解决方案非常有效。顺便问一下,RAILS_ENV 和 RACK_ENV 有什么区别?我没有看到任何关于配置 RAILS_ENV 的文章。我以为 RACK_ENV 与 rails 环境有关,但 RAILS_ENV 是正确的。 @casamia 如果它是正确的答案并帮助了你,请接受它,以便其他人可以更自信地使用它。以上是关于Rails aws elastic beanstalk部署错误与数据库适配器的主要内容,如果未能解决你的问题,请参考以下文章
在 AWS Elastic Beanstalk 上部署 rails 应用程序
AWS Elastic Beanstalk Rails Bundler 失败
使用 AWS Elastic Beanstalk 部署 Rails ActionCable
使用 MacOSX 将 Rails 应用程序推送到 AWS Elastic Beanstalk
创建 AWS Elastic Beanstalk Ruby/Rails 应用程序环境 [AWS 免费套餐] 时使用了哪些 AWS 资源/服务?