ActiveRecord::ConnectionAdapters::PostgreSQL 的未定义方法`geometry'

Imr*_*mad 2 postgresql postgis ruby-on-rails heroku

我使用 postgres 数据库创建了一个 rails 应用程序。我正在使用 postgis 扩展进行地理查询。该应用程序在我的开发(本地)机器上成功运行,但在我运行时在 heroku 服务器上部署我的代码后,heroku run rake db:migrate它抛出一个错误,说undefined method geometry for ActiveRecord ConnectionAdapters PostgreSQL. 我在某些迁移中使用几何数据类型来存储纬度和经度。

请注意,我还在heroku 上创建了PostGIS 扩展。并且成功执行不包含几何数据类型的迁移。我的文件是:

文件

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"
Run Code Online (Sandbox Code Playgroud)

psql --version 是:9.5.2在heroku服务器上

psql --version 是:9.4.7在本地服务器上

数据库.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'] %>
Run Code Online (Sandbox Code Playgroud)

create_cities 迁移

def change
    create_table :cities do |t|
      t.string :name
      t.references :state, foreign_key: true
      t.geometry :lat_lan
end
Run Code Online (Sandbox Code Playgroud)

heroku run rake db:migrate 只停在这里。

我完全困惑是我使用了不合适的 gem 还是我配置错误。请帮忙!

小智 7

如果使用 DATABASE_URL 环境变量设置数据库连接字符串,请确保它具有postgis://(而不是 postgres://)前缀。

IE。 postgis://username:password@db_server_url:5432/dbname