cas*_*mia 4 sqlite postgresql rubygems ruby-on-rails amazon-elastic-beanstalk
我正在尝试根据本文的指导将我的 rails 应用程序部署到 aws elastic beanstalk。
在开始之前,“在 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
Run Code Online (Sandbox Code Playgroud)
之后,我$ bundle install、$ git commit、 和$ eb deploy。但此时,EBS 出现以下消息错误
错误:[实例:i-80ee5327] 命令在实例上失败。返回代码:1 输出:(TRUNCATED)...sqlite3'` 到您的 Gemfile(并确保其版本为 ActiveRecord 要求的最低版本)。
Gem::LoadError: sqlite3 不是捆绑包的一部分。将其添加到 Gemfile。
任务:TOP => db:migrate => db:load_config(通过使用 --trace 运行任务查看完整跟踪)。
挂钩 /opt/elasticbeanstalk/hooks/appdeploy/pre/12_db_migration.sh 失败。有关更多详细信息,请使用控制台或 EB CLI 检查 /var/log/eb-activity.log。
信息:命令在所有实例上执行完毕。摘要:[成功: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
Run Code Online (Sandbox Code Playgroud)
之后,该$ eb deploy命令运行良好,服务器运行正常。
所以,我的问题是......为什么会出现这个问题?
在我看来,如果我将 gemfile 制作成第二个版本,sqlite3 适配器会在默认环境下加载,并且应该会在生产环境中崩溃。但结果与我完全相反。这是非常烦人的情况,更重要的是,我怀疑我是否正在做正确的解决方案。
请帮我...
这是我当前的环境变量。
RACK_ENV = development
SECRET_KEY_BASE = **********
RAILS_SKIP_MIGRATIONS = false
RAILS_SKIP_ASSET_COMPILATION = false
BUNDLE_WITHOUT = test:development
Run Code Online (Sandbox Code Playgroud)
看来您正在开发模式下运行 beanstalk 服务器。确保在 beanstalk 中设置了以下环境变量:
RAILS_ENV=production
RACK_ENV=production
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1955 次 |
| 最近记录: |