2015-09-22 8 views
5

Ich versuche, PostGIS in meiner Rails App auf Heroku zu aktivieren. Mein Gemfile umfasst das activerecord-postgis-adapter Juwel:Aktivieren der Ruby PostGIS-Unterstützung auf Heroku

gem 'activerecord-postgis-adapter', '3.0.0' 

Doch nach meinem Beispiel Boote, ich sehe nicht die volle Unterstützung aktiviert:

$ heroku run irb 
Running `irb` attached to terminal... up, run.5549 
irb(main):001:0> require 'rgeo' 
=> true 
irb(main):002:0> RGeo::Geos.supported? 
=> false 

Ich habe die heroku-geo-buildpack hinzugefügt, in den PostGIS article als angegeben , obwohl ich bin mit dem neueren, echten Multi-buildpack Format:

$ heroku buildpacks 
=== staging Buildpack URLs 
1. https://github.com/cyberdelia/heroku-geo-buildpack.git#1.3 
2. https://github.com/heroku/heroku-buildpack-ruby.git#v140 

ich bin verwirrt, da mein Build-Prozess-Look s korrekt:

-----> Multipack app detected 
-----> Fetching custom git buildpack... done 
-----> geos/gdal/proj app detected 
     Using geos version: 3.4.2 
     Using gdal version: 1.11.1 
     Using proj version: 4.8.0_1 
-----> Vendoring geo libraries done 
-----> Fetching custom git buildpack... done 
-----> Ruby app detected 
-----> Compiling Ruby/Rails 
... 

Was fehlt mir? Ich habe keine Umgebungsvariablen BUILDPACK_URL gesetzt, wie ich es für den alten Multi-Buildpack-Ansatz erfahre.

+3

Oh, das ist peinlich. Es sieht so aus, als hätte ich die Tatsache übersehen, dass die Hobby-Tier-Datenbanken dies nicht unterstützen. Ich nehme an, das ist mein Problem, obwohl ich erwartet hätte, einige Fehler zu sehen. – pr1001

+0

Ja, nur Datenbanken der Produktionsebene.Die sind: Standard-0 Premium-0, Standard-2 Premium-2, \t Standard-4 Premium-4, \t Standard-5 Premium-5, Standard-6 Premium-6, Standard-7 premium-7 enterprise-7, \t enterprise-8 –

+0

Sie sollten auf jeden Fall eine Antwort darauf akzeptieren. Hatte das gleiche Problem, und die Lösung war überhaupt nicht offensichtlich. –

Antwort

4

PostGIS funktioniert mit Heroku Freie dyno und:
- Rails 4.2
- Activerecord-postgis-Adapter 3.1.4

Sie müssen:

  1. setzen Ihre config/database.yml wie folgt aus:

default: &default 
    adapter: postgis 
    encoding: unicode 
    # For details on connection pooling, see rails configuration guide 
    # http://guides.rubyonrails.org/configuring.html#database-pooling 
    pool: 5 

development: 
    <<: *default 
    database: adopt_your_geek_development 
    username: postgres 
    host: mydb.com 
    port: 9999 
    postgis_extension: postgis 
    schema_search_path: public,postgis 

... 

production: 
    <<: *default 
    database: appname_production 
    username: appname 
    password: <%= ENV['ADOPT_YOUR_GEEK_DATABASE_PASSWORD'] %> 
    postgis_extension: postgis 
    schema_search_path: public,postgis 

  1. buildpacks hinzufügen:

$ heroku buildpacks:add https://github.com/ddollar/heroku-buildpack-multi.git 

Mit folgenden .buildpacks Datei:

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

  1. Dann fügen Sie ein kleines Monckey Patch in
  2. config/Umgebungen/production.rb

module ActiveRecord 
    module ConnectionHandling 
    class MergeAndResolveDefaultUrlConfig 
     private 
     def config 
     @raw_config.dup.tap do |cfg| 
      if url = ENV['DATABASE_URL'] 
      cfg[@env] ||= {} 
      cfg[@env]["url"] ||= url.try(:gsub, "postgres", "postgis") 
      end 
     end 
     end 
    end 
    end 
end 

ich für mich arbeitet jetzt auf Heroku frei dyno mit freiem Postgres.

+0

Ich sprach mit den Jungs von Heroku und diese Lösung ist, was sie empfehlen. "PostGIS ist in der öffentlichen Beta-Version verfügbar und Sie können es auch mit Hobby-Tier ausprobieren. Sie finden das Detail aus PostGIS: Geodaten mit Rails und Django Apps verwenden (https://devcenter.heroku.com/articles/postgis)." Es funktioniert super :) - spart mir 50 Dollar pro Monat – evanjmg

0

Ich habe die Tatsache übersehen, dass die Hobby-Tier-Datenbanken PostGIS nicht unterstützen.

+1

Sie unterstützen es jetzt. – Pak