この記事のガイダンスに従って、Railsアプリケーションをaws ElasticBeanstalkにデプロイしようとしています。
「RailsでPostgreSQLを使用する」のパートを始める前は、問題はありませんでした。
その部分では、他のRailsアプリと同様に、postgreSQL gemを本番グループに追加し、sqlite3 gemを開発およびテストグループに移動する、gemfileの変更に従いました。
このような
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
その後、I $ 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が失敗しました。詳細については、コンソールまたはEBCLIを使用して/var/log/eb-activity.logを確認してください。
情報:すべてのインスタンスでコマンドの実行が完了しました。要約:[成功:0、失敗:1]。
エラー:インスタンスID'i-80ee5327 'でのコマンド実行に失敗しました。操作を中止します。
エラー:アプリケーションのデプロイに失敗しました。
エラーメッセージを読んで、sqlite3 gemがawsインスタンスによってロードされていないことがわかったので、sqlite3gemコードを開発グループの外部に出しました。
gem 'sqlite3', '~> 1.3.10'
group :development, :test do
...other gems...
end
group :production do
gem 'pg', '~> 0.18.1'
end
その後、$ eb deploy
コマンドは正常に機能し、サーバーは機能します。
だから、私の質問は...なぜこの問題が発生するのですか?
私の考えでは、gemfileを2番目のバージョンのように作成すると、sqlite3アダプターがデフォルト環境でロードされ、本番環境でクラッシュするはずです。しかし、結果は私とは完全に反対です。これは非常に厄介な状況であり、さらに言えば、私が正しい解決策を実行しているかどうかは疑問です。
私を助けてください...
これは私の現在の環境変数です。
RACK_ENV = development
SECRET_KEY_BASE = **********
RAILS_SKIP_MIGRATIONS = false
RAILS_SKIP_ASSET_COMPILATION = false
BUNDLE_WITHOUT = test:development
Beanstalkサーバーを開発モードで実行しているようです。Beanstalkに次の環境変数が設定されていることを確認してください。
RAILS_ENV=production
RACK_ENV=production
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加