0

RoR アプリを立ち上げて Elastic Beanstalk で実行しようとしていますが、rgeo gem を機能させるのに苦労しています。Web サーバーで発生しているエラーは次のとおりです。

I, [2015-09-28T11:26:54.982049 #21789]  INFO -- : Completed 500 Internal     Server Error in 5ms (ActiveRecord: 2.6ms)
F, [2015-09-28T11:26:54.983523 #21789] FATAL -- : 
NoMethodError (undefined method `point' for nil:NilClass):
  lib/app/weather_service.rb:61:in `block in get_location'
  ....

このエラーは、コードがデータベース内の POINT データ型によってサポートされるモデル属性にアクセスするときに発生します。このエラーは通常、依存関係の欠落、つまり、このスレッドで説明されている geos が原因で発生します。そのため、基盤となる EC2 インスタンスに接続し、geos をインストールして、rgeo gem を再インストールしました。これにより、Rails コンソールの問題が解決されました。

[ec2-user@ip-xxx-xxx-xxx-xxx ~]$ cd /var/app/current
[ec2-user@ip-xxx-xxx-xxx-xxx current]$ rails c
Loading production environment (Rails 4.2.4)
irb(main):001:0> RGeo::Geos.supported?
=> true

ただし、Web サーバーのエラーは解決しませんでした。Elastic Beanstalk 環境を明確に理解していないことは確かです。基盤となる EC2 インスタンスに直接変更を加えても、アプリケーション インスタンスで依存関係を利用できない可能性があります。将来の展開のためにカスタム AMI または ebextensions に依存関係を追加する必要があることは理解していますが、そのプロセスを実行する前に、依存関係が機能していることを確認したかったのです。任意のガイダンスをいただければ幸いです。

4

1 に答える 1

0

他の誰かがこの同じ問題に遭遇した場合に備えて、私は解決策を見つけました. これらは私が従った手順です:

  • AMI ami-bddbc48d を使用して EC2 インスタンスを作成しました
  • この便利なスクリプトを使用して PostGIS 依存関係をインストールしましたhttps://gist.github.com/whyvez/8d19096712ea44ba66b0
  • そのインスタンスからカスタム AMI を作成しました
  • その新しいカスタム AMI を使用するように EBS 環境構成を更新しました
  • 出来上がり!問題が解決しました
于 2015-09-30T12:28:56.300 に答える