activerecord_postgis_adapter: неопределенный метод `точка' для nil:NilClass

Проблема

На 90% уверен, что это ошибка установки с моей стороны, но я не могу выполнить self.factory, и попытка доступа к lonlat дает мне исключение «неопределенный метод `point' для nil: NilClass"

Я могу

Установите лонлат, используя:

mfactory = RGeo::ActiveRecord::SpatialFactoryStore.instance.factory(:geo_type => 'point')
self.lonlat = mfactory.point(long, lat)
self.save

Это дает мне такие значения, как 0101000020E610000061C3D32B65965DC03657CD7344F64040 в БД.

Я не могу использовать:

self.lonlat = "POINT(#{long},#{lat})"
self.save

Вопросы

Нужно ли настраивать что-то конкретное в модели?


person AndHeiberg    schedule 01.07.2015    source источник


Ответы (1)


Я создал задачу на github с менее кратким, но более подробным объяснением.

RGeos зависит от GEOS. Эта ошибка возникает из-за того, что RGeos не может загрузить GEOS.

Чтобы проверить, не в этом ли проблема:

$ rails c
> RGeo::Geos.supported?
=> false

Чтобы проверить, установлен ли у вас GEOS:

geos-config --version

Если GEOS не установлен:

brew install geos

Если GEOS установлен, исправьте установленный RGeo:

$ geos-config --prefix
/usr/local/Cellar/geos/3.5.0
$ gem install rgeo -- --with-geos-dir=/usr/local/Cellar/geos/3.5.0

Теперь должно быть установлено правильно, и ваши ошибки исправлены. Вы можете проверить, как мы сделали выше:

$ rails c
> RGeo::Geos.supported?
=> true

Если это не работает, удалите ВСЕ версии geos и rgeo:

$ brew uninstall geos
$ gem uninstall rgeo

Переустановите geos и rgeo, как указано выше. У вас должен быть gem 'rgeo' в вашем Gemfile, и после сборки вы должны увидеть это как один из выходных данных: «Установка rgeo 0.4.0 с собственными расширениями».

person AndHeiberg    schedule 01.07.2015