[OpenStreetMap] #4613: Installing fresh openstreetmap database fails
tom at compton.nu
Tue Oct 9 21:09:50 BST 2012
On 08/10/12 16:26, OpenStreetMap wrote:
> Replying to [comment:2 TomH]:
> > It was never the intention that db:setup be used
> Is that because of the hard-coded paths, or some other reason? db:setup is
> the recommended practice, and for good reason in my experience.
> Migrations, as a means of initializing a fresh database, are slower and
> more error-prone. Rails does not consider them to be the authoritative
> source for the schema; structure.sql is.
I've looked into this a bit, because this was the first I had heard that
the migrations were not supposed to be the authoritative source.
I think this is probably something where best practice has changed at
some point and has passed me by - certainly the comments rails adds
these days makes it clear that the intention is as you say.
Obviously the normal case would be to have a schema.rb file but we have
switched to SQL mode because we have various things in the database that
are not supported directly by the ruby schema DSL.
The bigger problem with making structure.sql and db:setup the preferred
way to setup a database is that there are several things in there which
are not setup by the migrations at all, and which are non-portable
and/or require database superuser privileges to run.
The first of those is the btree_gist extension referenced in the ticket
which both needs superuser privileges and which will only work in 9.1
and later as earlier versions did not support packaged extensions like
that and instead just had an SQL script that installed a bunch of types
and functions etc.
The second is our 3GL functions, which both need superuser privileges
and also wind up embedding a fully qualified filesystem path to the
shard object, which is not portable to different machines.
Suggestions for how to deal with these would be welcome...
Tom Hughes (tom at compton.nu)
More information about the rails-dev