2015-09-22 19 views
5

Sto tentando di abilitare PostGIS nella mia app Rails su Heroku. Il mio Gemfile include il activerecord-postgis-adapter gemma:Abilitazione del supporto di Ruby PostGIS su Heroku

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

Tuttavia, dopo l'avvio il mio esempio, non vedo il supporto completo abilitato:

$ 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 

ho aggiunto la heroku-geo-buildpack, come specificato nella PostGIS article , anche se sto usando la più recente, vero formato multi-buildpack:

$ 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 

sono confuso, dato che il mio sguardo processo di compilazione s corretta:

-----> 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 
... 

Cosa mi manca? Non ho un set di variabili ambientali BUILDPACK_URL, poiché ritengo che sia per il vecchio approccio multi-buildpack.

+3

Oh, questo è imbarazzante. Sembra che mi sia sfuggito il fatto che i database di livello Hobby non lo supportano. Immagino che questo sia il mio problema, quindi, anche se mi sarei aspettato di vedere alcuni errori. – pr1001

+0

Sì, solo database di livelli di produzione.Che sono: 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

Si dovrebbe assolutamente accettare una risposta a questo. Aveva lo stesso problema, e la soluzione non era affatto ovvia. –

risposta

4

PostGIS funziona con Heroku banco prova libera e:
- Rails 4.2
- activerecord-PostGIS adattatore 3.1.4

Dovete:

  1. set config/database.yml in questo modo:

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. Aggiungi buildpacks:

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

Con il seguente file .buildpacks:

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

  1. Quindi aggiungere una piccola patch monckey in config/ambienti/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 

mi funziona per me in questo momento su Heroku Postgres gratis banco prova con libere.

+0

Ho parlato con i ragazzi di Heroku e questa soluzione è ciò che loro raccomandano. "PostGIS è disponibile in versione beta pubblica e puoi provarlo anche con il livello Hobby. Puoi trovare i dettagli da PostGIS: Utilizzo dei dati geospaziali con le guide e le app Django (https://devcenter.heroku.com/articles/postgis)." Funziona benissimo :) - risparmiando 50 dollari al mese – evanjmg

0

Ho perso il fatto che i database di livello Hobby non supportano PostGIS.

+1

Lo supportano ora. – Pak