【发布时间】:2016-01-10 16:58:29
【问题描述】:
我有一个使用 RGeo gem 的 rails 应用程序,我很难安装 gem 以支持我的应用程序正常工作所需的底层 GEOS library。
通常,您可以从 rails 控制台运行 RGeo::Geos.supported?,如果支持 GEOS,它将返回 true,否则返回 false。这适用于我的开发机器 (OS X),但总是在我的 Dokku 容器上返回 false。
我正在使用构建包来拉入这些库,这是我的 .buildpack file 的内容:
https://github.com/cyberdelia/heroku-geo-buildpack.git#1.3
https://github.com/heroku/heroku-buildpack-ruby.git#v141
这似乎至少部分有效,因为 gem 正在使用 PROJ.4 库。这可以通过在 rails 控制台中运行 RGeo::CoordSys::Proj4.supported? 来检查,这会在我的 Dokku 部署中返回 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。只有这样我的应用程序才能正常工作,目前它返回false,这意味着 RGeo gem 在安装过程中没有找到 GEOS (libgeos) 库。部署期间没有错误,并且日志输出(包括上面的相关部分)报告 GEOS 3.4.2 是通过 buildpack 安装的。如果没有 GEOS 支持,我什至无法为我的数据库播种,因为该过程的一部分涉及读取 shapfiles 并通过 PostGIS 将它们存储为几何图形。我的应用程序还使用了许多其他需要通过 RGeo 进行 GEOS 的功能,因此要求 RGeo::Geos.supported? 在控制台中返回 true,这意味着 GEOS 可通过 RGeo gem 使用,并且读取 shapefile 等功能将起作用。
【问题讨论】:
-
RGeo 需要一些额外的软件包,例如 libgeos。你安装了吗?
-
我意识到这就是手头的问题。顺便说一句,libgeos 与我的问题中提到的 GEOS 库相同。如果您再次阅读该问题,您会注意到 buildpack 确实安装了 GEOS,您还可以在部署的输出中看到:使用 geos 版本:3.4.2。所以我想弄清楚这个过程出了什么问题,或者是否有办法将geo buildpack与Dokku一起使用。
-
只是为了提供更多背景知识:这是我第一次使用 Dokku 和扩展 Docker。我知道如何在通过系统的包管理器安装所有必需库的单个服务器上使其工作。问题是如何让它在 Dokku 中工作,每次部署时都会创建一个新的 Docker 容器。
-
您在哪里看到错误?我在该日志输出中看不到任何错误,而且您还没有说明这不是如何工作的。
-
@JoseDiaz-Gonzalez,是的,我有......见上面我声明 RGeo::Geos.supported?在控制台中返回 false。如果 gem 在安装期间能够找到 geos 库,这将返回 true。
标签: ruby ruby-on-rails-4 dokku rgeo