在heroku cedar stack上安装GEOS库时遇到问题。
我们按照这个指南:https://devcenter.spacialdb.com/Heroku.html,但它没有工作。
我们注意到所提供的geos二进制文件中存储的路径(/app/tmp/geos)是错误的,所以我们使用vulcan构建了自己的二进制文件。
我们相应地改变了参数(BUNDLE_BUILD__RGEO),但我们无法使其工作。
我们甚至在自定义的rgeo gem中硬编码地理路径,但没有成功
我们也尝试了其他的构建脚本(https://github.com/roximity/heroku-buildpack-ruby-geos),但他们太老了,很难保持他们的最新与heroku的一个
我们使用ruby 2.0.0-p195和Rails 3.2.13
RGeo gem的当前维护者之一。我们正在改进文档,我已经编辑了提到在heroku上安装geos的部分。
为了避免链接失效,这里有一个解决方案:
echo 'libgeos-dev=3.7.1-1~pgdg18.04+1' > Aptfile # Use the version you want here
git add Aptfile
git commit -m 'Add Aptfile with libgeos'
heroku buildpacks:add --index=1 heroku-community/apt
# If you already have installed the gem earlier, you will need to purge your repo cache:
# heroku plugins:install heroku-repo
# heroku repo:purge_cache
git push heroku main
heroku console <<< 'puts "RGeo is configured with Geos !" if RGeo::Geos.capi_supported?;exit'
如果您还希望得到标准地理库(如Proj4)的支持,您应该考虑使用heroku-geo-buildpack。这将会稍微慢一些,并且您将有一个更大的slug,因为它将安装您可能不需要的库。
我刚刚创建了heroku-buildpack-rgeo-prep来解决这个问题。
此构建包覆盖.bundle/config以将BUNDLE_BUILD__RGEO设置为当前构建路径。不幸的是,你不能设置BUNDLE_BUILD_RGEO=/app,因为你的项目实际上是在/tmp/build_1890cktlpat5d这样的地方构建的。
希望这个构建包能让在Heroku上使用RGeo少一些痛苦。