3

我正在尝试将 Rails 应用程序(ruby​​ 2.3.0, rails 4.2.6)部署到使用RGeo gem 的 Heroku,但我没有安装 RGeo gem 所依赖的底层 GEOS 库(参见https: //github.com/rgeo/rgeo#dependencies)。

根据Heroku 自己的说明,这应该可以通过使用heroku-geo-buildpack来实现,但它不起作用。

将 BUILDPACK 添加到应用程序:

$ heroku buildpacks:set https://github.com/cyberdelia/heroku-geo-buildpack.git
$ heroku buildpacks:add heroku/ruby

构建过程看起来不错:

remote: Building source:
remote: 
remote: -----> geos/gdal/proj app detected
remote:        Using geos version: 3.4.2
remote:        Using gdal version: 1.11.1
remote:        Using proj version: 4.8.0_1
remote: -----> Vendoring geo libraries done
remote: -----> Ruby app detected
remote: -----> Compiling Ruby/Rails
remote: -----> Using Ruby version: ruby-2.3.0

测试依赖:

>>> require 'rgeo'
=> false
>>> RGeo::CoordSys::Proj4.supported?
=> true
>>> RGeo::Geos.supported?
=> false
4

1 回答 1

3

在 heroku 上获取特定的 geos buildpack 似乎存在问题,主要是因为 geos 的构建参数。有关完整的详细信息,您可以查看这个对 buildpack 的拉取请求,其中讨论了很多内容。使用webpack 的 fork 的解决方案在这篇博文中有详细描述。

.vendor_urls第 1 步:在项目的根目录中创建此文件:

https://s3.amazonaws.com/diowa-buildpacks/geos-3.5.0-heroku.tar.gz
https://s3.amazonaws.com/diowa-buildpacks/proj-4.9.1-heroku.tar.gz

将此文件添加到 git 并确保它以换行符结尾。

第 2 步:设置 Heroku 配置:

heroku buildpacks:set https://github.com/diowa/heroku-buildpack-rgeo-prep.git
heroku buildpacks:add https://github.com/peterkeen/heroku-buildpack-vendorbinaries.git
heroku buildpacks:add heroku/ruby
heroku config:set LD_LIBRARY_PATH=/app/lib

(见https://github.com/diowa/heroku-buildpack-rgeo-prep#setup

最后要注意,如果已经安装了rgeo,需要重新编译gem。您可以通过使用heroku repo 插件,再次运行heroku repo:purge_cache -a appname和部署来做到这一点。

(见http://www.diowa.com/blog/heroku/2016/02/26/using-rgeo-with-geos-on-heroku#deploy

于 2016-12-19T17:35:07.417 回答