我有一个使用RGeo gem 的 rails 应用程序,我很难安装 gem 并支持我的应用程序正常工作所需的底层GEOS 库。
通常,您可以从 rails 控制台运行,如果支持 GEOS RGeo::Geos.supported?
,它将返回,否则。这适用于我的开发机器(OS X),但总是返回true
false
false
我的 Dokku 容器。
我正在使用构建包来拉入这些库,这是我的内容.buildpack file
:
https://github.com/cyberdelia/heroku-geo-buildpack.git#1.3
https://github.com/heroku/heroku-buildpack-ruby.git#v141
这似乎至少部分有效,因为 gem 正在使用 PROJ.4 库。这可以通过在我的 Dokku 部署RGeo::CoordSys::Proj4.supported?
中返回的 rails 控制台运行来检查。true
当我部署应用程序时,构建包似乎可以正常工作:
-----> Cleaning up...
-----> Building demoapp from herokuish...
-----> Adding BUILD_ENV to build environment...
-----> Multipack app detected
=====> Downloading Buildpack: https://github.com/cyberdelia/heroku-geo-buildpack.git
=====> Detected Framework: geos/gdal/proj
Using geos version: 3.4.2
Using gdal version: 1.11.1
Using proj version: 4.8.0_1
-----> Vendoring geo libraries done
=====> Downloading Buildpack: https://github.com/heroku/heroku-buildpack-ruby.git
=====> Detected Framework: Ruby
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-2.2.3
-----> Installing dependencies using bundler 1.9.7
Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment
我正在使用最新版本的 Dokku (0.4.10),该应用程序目前在 Ruby 2.2.3、Rails 4.2.5 上运行。
编辑(澄清):我需要这个方法调用(RGeo::Geos.supported?
)在我的应用程序容器的rails控制台中返回true
。只有这样我的应用程序才能正常工作,目前它正在控制台中返回,这意味着 GEOS 可通过 RGeo gem 使用,并且读取 shapefile 等功能将起作用。false
,这意味着 RGeo gem 在安装过程中没有找到 GEOS (libgeos) 库。部署期间没有错误,并且日志输出(包括上面的相关部分)报告 GEOS 3.4.2 是通过 buildpack 安装的。如果没有 GEOS 支持,我什至无法为我的数据库播种,因为该过程的一部分涉及读取 shapfiles 并通过 PostGIS 将它们存储为几何图形。我的应用程序还使用了许多其他需要通过 RGeo 进行 GEOS 的功能,因此这是一个RGeo::Geos.supported?
返回的要求true