Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

undefined method `geometry' for ActiveRecord::ConnectionAdapters::PostgreSQL

I have created a rails application using postgres database. I am using postgis extension for geo queries. The app is running successfully on my development(local) machine but after deploying my code on heroku server when I run heroku run rake db:migrate it is throwing an error, saying undefined method geometry for ActiveRecord ConnectionAdapters PostgreSQL. I have geometry datatype in some migrations for storing latitude and longitude.

Note that I have also created PostGIS extension on heroku. And migrations that does not contain geometry datatype executed successfully. My files are:

Gemfile

ruby "2.3.0"
gem 'rails', '>= 5.0.0.beta3', '< 5.1'
gem 'pg', '~> 0.18'
gem 'rgeo'
gem 'rgeo-activerecord', "~> 5.0.0.beta"
gem "activerecord-postgis-adapter", "~> 4.0.0.beta2"

psql --version is: 9.5.2 on heroku server

psql --version is: 9.4.7 on local server

database.yml

default: &default
  adapter: postgis
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: ad_development

production:
  <<: *default
  database: ad_production
  username: ad
  password: <%= ENV['DATABASE_PASSWORD'] %>

create_cities migration

def change
    create_table :cities do |t|
      t.string :name
      t.references :state, foreign_key: true
      t.geometry :lat_lan
end

heroku run rake db:migrate stops here only.

I am totally confused whether I have used inappropriate gems or I have misconfigured something. Please help!

like image 422
Imran Ahmad Avatar asked Mar 19 '26 16:03

Imran Ahmad


1 Answers

If using the DATABASE_URL environment variable to set the database connection string, ensure it has the postgis:// (not postgres://) prefix.

ie. postgis://username:password@db_server_url:5432/dbname

like image 170
Steve L Avatar answered Mar 22 '26 06:03

Steve L