Hi Grar,

If you really want to call a single migration, you could do something
like:

$ ./script/console
...
>> require "#{RAILS_ROOT}/db/migrate/100_create_foos.rb"
=> ["CreateFoos"]

>> CreateFoos.down
==  CreateFoos: reverting =============================
-- drop_table(:foos)
...

>> ActiveRecord::Base.connection.tables.include?('foos')
=> false

>> CreateFoos.up
==  CreateFoos: migrating =============================
-- create_table(:foos)
...

>> ActiveRecord::Base.connection.tables.include?('foos')
=> true

And/or roll such calls into a runnable script and run it via runner:

$ cat ./script/migrate_foo.runnable
require "#{RAILS_ROOT}/db/migrate/100_create_foos.rb"
CreateFoos.down
CreateFoos.up

$ ./script/runner ./script/migrate_foo.runnable
...

Personally, I like to keep my migrations intact as well, one per
persistable model ob, unless I'm working on a project with a team that
doesn't.  This way it's easy for devs to see exactly what's defined at
that time in the db for a given model ob, without having to weed
through all the various modifying migrations related to some model ob,
or looking for such info in the development_structure.sql if
available, or having to fire up the console or an underlying db qry
tool to see that model ob's current db schema.

For all my projects, I usually dev a runnable re-init script that
contains all of the work (that I would typically call by hand)
required to put the env in the current valid working state: run
migrations, load any init data as required for the env, perform any
post-init processing of data, run tests, etc.

Whenever a new migration is added or an existing one is modified or
init data is added/modified, I just make one call to re-init the dev
env.  Note that the same holds true for pulling and re-init'ing some
version from svn/git/....

When it comes to upgrading the production env for a new release that
requires db-related changes, I dev a runnable script per prod env
upgrade that performs the necessary work to upgrade the prod env to be
in line with that particular release: run pre-upgrade tests to see if
upgrade can/should be performed, run specific migrations and/or db
schema mods as applicable, load any data and/or perform any data
updates, run post-upgrade tests, etc.

Whenever a prod env upgrade needs to be performed, I dump the prod env
db as a pre-upgrade backup, run the upgrade script to pre-test the
prod env, upgrade the prod env, and post-test the prod env, and when
all is good, dump the db again as a post-upgrade backup.  (I usually
test each upgrade scripts against a similar version/state of the dev
env prior to performing the upgrade on the prod env, and once the
script's working as intended, then I just re-init the current dev
env.)  Having such prod env upgrade scripts (and related db dumps)
makes it equally easy to revert back to a specific state of the prod
env as well.

Jeff

On Mar 19, 11:22 am, Grary <grary.sti...@gmail.com> wrote:
> Yes, I've certainly given the role of seed data due consideration in
> another context, but it's not relevant in the case at hand, I don't
> think. In that case at hand, the large data set I seek to include in
> my development is used for autocompletion and by business logic on the
> model side.
>
> Thanks,
>
> Grar
>
> On Mar 19, 1:50 pm, Colin Law <clan...@googlemail.com> wrote:
>
>
>
> > On 19 March 2010 16:07, Grary <grary.sti...@gmail.com> wrote:
>
> > > Hi,
>
> > > I prefer to keep one migration per model, but lately I'm adding data
> > > that's expensive to drop every time I change my models.
>
> > It is considered a bad idea to seed data using migrations, if that is
> > what you are doing.  Google for rails migration seed for many
> > discussions on this issue, including on this list.  Perhaps this is
> > your fundamental problem.
>
> > Colin
>
> > > How do I db:drop and db:migrate only selected tables/files? Basically,
> > > I want to ignore certain tables and migrations altogether during
> > > certain development phases.
>
> > > Thanks,
>
> > > Grar
>
> > > --
> > > You received this message because you are subscribed to the Google Groups 
> > > "Ruby on Rails: Talk" group.
> > > To post to this group, send email to rubyonrails-t...@googlegroups.com.
> > > To unsubscribe from this group, send email to 
> > > rubyonrails-talk+unsubscr...@googlegroups.com.
> > > For more options, visit this group 
> > > athttp://groups.google.com/group/rubyonrails-talk?hl=en.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to