0

We are using rails (4.0.4), ruby (2.0.0p247) and activerecord-postgis-adapter (0.6.5) and singular table names set in ./config/environment.rb (ActiveRecord::Base.pluralize_table_names = false)

This works great in development and test environments.

In the production environment it works for every table but one, project. For this table we are seeing an error in the controller index.

I regenerated the scaffolding and was able to pinpoint the problem the this lin in the project_controllers:

set_rgeo_factory_for_column(:location, RGeo::Geographic.spherical_factory(:srid => 4326))

The error is:

 E, [2014-04-11T10:23:09.543299 #10740] ERROR -- : PG::UndefinedTable: ERROR:  relation "projects" does not exist
LINE 5:                WHERE a.attrelid = '"projects"'::regclass
                                      ^
:               SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                 pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
            FROM pg_attribute a LEFT JOIN pg_attrdef d
              ON a.attrelid = d.adrelid AND a.attnum = d.adnum
           WHERE a.attrelid = '"projects"'::regclass
             AND a.attnum > 0 AND NOT a.attisdropped
               ORDER BY a.attnum

I, [2014-04-11T10:23:09.543625 #10740]  INFO -- : Completed 500 Internal Server Error in 7ms
F, [2014-04-11T10:23:09.545403 #10740] FATAL -- :
ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR:  relation "projects" does not exist
LINE 5:                WHERE a.attrelid = '"projects"'::regclass
                                      ^
:               SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                 pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
            FROM pg_attribute a LEFT JOIN pg_attrdef d
              ON a.attrelid = d.adrelid AND a.attnum = d.adnum
           WHERE a.attrelid = '"projects"'::regclass
             AND a.attnum > 0 AND NOT a.attisdropped
           ORDER BY a.attnum
): app/controllers/projects_controller.rb:11:in `index'

Seems really odd it works in every other environment and in production it only fails for one table, as well as associated tables.

Any suggestion appreciated.

techbrownbags
  • 618
  • 5
  • 10

1 Answers1

0

I found two solutions:

  1. remove set_rgeo_factory_for_column from the model, I was using the default factory anyways
  2. Explicitly specify the table name, self.table_name. This is odd since i set ActiveRecord::Base.pluralize_table_names = false
techbrownbags
  • 618
  • 5
  • 10