我正在努力让我的RoR应用程序在Elastic Beanstalk上运行并且正在努力让rgeo gem工作。我在网络服务器上得到的错误是:
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数据类型支持的模型属性时,会发生该错误。该错误通常是由于缺少依赖性,即此thread中描述的地理位置。所以我连接到底层EC2实例,安装了geos并重新安装了rgeo gem。这解决了rails console中的问题:
[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以供将来部署,但我想确保在执行该过程之前我已将依赖项工作。任何指导都将不胜感激。
答案 0 :(得分:0)
如果其他人遇到同样的问题,我确实找到了解决方案。这些是我遵循的步骤: