私はRGeo gemを使用する Rails アプリを持っていますが、アプリが適切に動作するために必要な基本的なGEOS ライブラリをサポートして、gem をインストールするのに苦労しています。
RGeo::Geos.supported?
通常、Rails コンソールから実行できtrue
、GEOS がサポートされている場合は戻りfalse
ます。これは開発マシン (OS X) で動作します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 ライブラリを取得しているため、これは少なくとも部分的には機能しているようです。RGeo::CoordSys::Proj4.supported?
これは、Rails コンソールで実行することで確認できます。これはtrue
、私の Dokku デプロイに戻ります。
アプリをデプロイすると、ビルド パックは問題なく動作しているように見えます。
-----> 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?
戻るには、このメソッド呼び出し( )が必要です。true
そうして初めて、私のアプリは正しく動作します。現在、アプリは返さfalse
れています。これは、インストール中に RGeo gem が GEOS (libgeos) ライブラリを見つけられなかったことを意味します。展開中にエラーは発生せず、ログ出力 (上記の関連セクション) は、ビルドパックを介して GEOS 3.4.2 がインストールされたことを報告します。GEOS のサポートがなければ、データベースをシードすることさえできません。そのプロセスの一部には、shapfile を読み込んで、PostGIS を介してジオメトリとして保存することが含まれているからです。私のアプリは、RGeo 経由で GEOS を必要とする他の多くの機能も使用しているため、RGeo::Geos.supported?
返される要件です。true
つまり、GEOS は RGeo gem を介して利用でき、シェープファイルの読み込みなどの機能が動作します。