2015-09-22 14 views
5

Próbuję włączyć PostGIS w mojej aplikacji Rails na Heroku. Moja Gemfile zawiera activerecord-postgis-adapter GEM:Umożliwianie obsługi PostGIS przez Ruby na Heroku

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

Jednak po załadowaniu się moje wystąpienie, nie widzę pełne wsparcie włączona:

$ 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 

Dodałem heroku-geo-buildpack, jak określono w PostGIS article , ale używam nowszego, prawdziwego formatu 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 

Jestem zdezorientowany, ponieważ mój wygląd procesu kompilacji s prawidłowe:

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

Czego mi brakuje? Nie mam zestawu zmiennych środowiskowych BUILDPACK_URL, ponieważ uważam, że jest on przeznaczony dla starego podejścia wielopompowego.

+3

To jest krępujące. Wygląda na to, że przegapiłem fakt, że bazy danych poziomu Hobby nie obsługują tego. Sądzę, że to mój problem, choć spodziewałbym się, że zobaczę jakieś błędy. – pr1001

+0

Tak, tylko bazy danych poziomu produkcji.Którymi są: standardowej 0 najwyższej 0 standardowej 2 podwyższonej 2 \t standardowym 4 podwyższonej 4 \t standardowym 5 najwyższej 5 standardowym 6 podwyższonej 6 standardowego 7 premium-7 enterprise-7, \t enterprise-8 –

+0

Powinieneś zdecydowanie zaakceptować odpowiedź na to pytanie. Miał ten sam problem, a rozwiązanie wcale NIE było oczywiste. –

Odpowiedz

4

PostGIS działa z Heroku bezpłatnym hamowni oraz:
- Rails 4.2
- activerecord-postgis adapter 3.1.4

Musisz:

  1. ustawić config/database.yml tak:

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

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

z poniższym pliku .buildpacks:

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

  1. Następnie dodaj małą łatkę monckey config/środowiska/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 

ja pracuje dla mnie w tej chwili na Heroku wolnego hamowni z wolnymi PostgreSQL.

+0

Rozmawiałem z chłopakami z Heroku i to jest to, co polecają. "PostGIS jest dostępny w publicznej wersji beta i możesz go wypróbować również w warstwie Hobby. Możesz znaleźć szczegóły z PostGIS: Korzystanie z danych geoprzestrzennych za pomocą Railsów i aplikacji Django (https://devcenter.heroku.com/articles/postgis)." Działa wspaniale :) - oszczędzając mi 50 dolców miesięcznie – evanjmg

0

Brakowało mi tego, że bazy danych Hobby nie obsługują PostGIS.

+1

Wspierają go teraz. – Pak