2

私は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 を介して利用でき、シェープファイルの読み込みなどの機能が動作します。

4

1 に答える 1

0

コメントで Jose が指摘したように、apt-get プラグインを使用して、デプロイ中にパッケージをコンテナーにインストールできます。これにより、現在のgeo ビルドパックの問題を完全に回避できます。

プラグインを Dokku インスタンスにインストールした後apt-packages、プロジェクトのルートに次の内容のファイルを作成しました。

libgeos-dev
libgeos++-dev
libgdal-dev
libproj-dev

geo ビルドパック ( https://github.com/cyberdelia/heroku-geo-buildpack.git#1.3).buildpacksは使用されなくなったため、ファイルから削除しました。.buildpacks ファイルを完全に削除して、Ruby ビルドパック リポジトリを指すBUILDPACK_URL環境変数を作成するだけで済むようになりました。dokku config:set

デプロイ後、インストール中にネイティブ拡張機能をビルドできるようになったため、RGeo gem は GEOS が利用可能であると報告するようになりました。

irb(main):001:0> RGeo::Geos.supported?
=> true

apt-packagesライブラリをファイルに含めたので、PROJ.4 も同様に機能します。

irb(main):002:0> RGeo::CoordSys::Proj4.supported?
=> true
于 2016-01-13T15:46:05.830 に答える