Noisy Postgres Postgis Adapter Rails数据库迁移测试

时间:2013-09-17 00:55:30

标签: sql ruby-on-rails macos postgresql postgis

我正在尝试设置Postgres和Postgis在我的应用程序中执行一些简单的地理操作。我按照this post的指示行事。一切都很好,很快。但是,当我运行rake db:migraterake test时,我收到以下错误:

psql:/Users/jophde/Desktop/local/db/structure.sql:154: ERROR:  rule "geometry_columns_delete" for relation "geometry_columns" already exists
psql:/Users/jophde/Desktop/local/db/structure.sql:161: ERROR:  rule "geometry_columns_insert" for relation "geometry_columns" already exists
psql:/Users/jophde/Desktop/local/db/structure.sql:168: ERROR:  rule "geometry_columns_update" for relation "geometry_columns" already exists

它们更像是警告,因为测试和迁移工作正常。但是,每次测试时打印出来都很烦人。我正在使用config.active_record.schema_format = :sql。以下是structure.sql

中错误中引用的行
CREATE RULE geometry_columns_delete AS ON DELETE TO geometry_columns DO INSTEAD NOTHING;
CREATE RULE geometry_columns_insert AS ON INSERT TO geometry_columns DO INSTEAD NOTHING;
CREATE RULE geometry_columns_update AS ON UPDATE TO geometry_columns DO INSTEAD NOTHING;  

我的数据库配置如下:

development:
  adapter: postgresql
  database: local_development
  host: localhost

test:
  adapter: postgresql
  database: local_test
  host: localhost

我用来启用PostGis的迁移是:

class EnablePostgis < ActiveRecord::Migration
  def change
    enable_extension :postgis
  end
end

class AddPointIndexToMarkets < ActiveRecord::Migration
  def up
    execute %{
      create index index_on_markets_location ON markets using gist (
        ST_GeographyFromText(
          'SRID=4326;POINT(' || markets.longitude || ' ' || markets.latitude || ')'
        )
      )
    }
  end

  def down
    execute %{ drop index index_on_markets_location }
  end
end

我在Mac OSX 10.8.4(Mountain Lion)上使用Postgres.app版本9.3.0.0(16)(最新版)

2 个答案:

答案 0 :(得分:1)

尝试ActiveRecord::Schema.verbose = false

答案 1 :(得分:1)

添加

min_messages: fatal

developmenttest config/database.yml就行了。

development:
  adapter: postgresql
  database: local_development
  host: localhost
  min_messages: fatal

test:
  adapter: postgresql
  database: local_development
  host: localhost
  min_messages: fatal