Forum: Ruby on Rails rake db:migrate should run for all environements

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
059ed46172a087063ce26250e44c8627?d=identicon&s=25 Fernando Perez (fernando)
on 2009-02-02 23:47
Or at least development and test. How many times did I find myself
banging my head on the table with buggy tests until I figured out that I
had forgotten to migrate the test database.

Why rake db:migrate doesn't by default migrate all environments at the
same time?
D69d23d8e811e8ab2a8593380d6ede63?d=identicon&s=25 Jeff Emminger (jemminger)
on 2009-02-03 21:48
(Received via mailing list)
Because maybe you don't want it to happen all at once, maybe you need
to stage things.  Imagine you're developing new features for an
existing system, and you create some destructive migrations.  You want
those to automatically affect your other environments when you might
not even be done writing and testing code?

A better idea is to realize that these processes are separate and
manual and get in the habit of doing it yourself.   Plus, if you just
use "rake" instead of running a specific test, rake will warn you that
you have pending migrations.


On Feb 2, 5:47 pm, Fernando Perez <rails-mailing-l...@andreas-s.net>
A6e8497213547aac53e68d57c03ee4af?d=identicon&s=25 Greg (Guest)
on 2009-02-03 22:36
(Received via mailing list)
I do think that Fernando has a valid point.  There is, for example,
already a rake task that can create all of your databases at once,
namely `rake db:create:all`.  A `rake db:migrate:all` might be a
useful thing to have.  That being said, it would be pretty trivial to
code this yourself.

Greg
280b78a61a968391b7e07e912be102a8?d=identicon&s=25 Robert Walker (robert4723)
on 2009-02-03 23:05
Greg wrote:
> I do think that Fernando has a valid point.  There is, for example,
> already a rake task that can create all of your databases at once,
> namely `rake db:create:all`.  A `rake db:migrate:all` might be a
> useful thing to have.  That being said, it would be pretty trivial to
> code this yourself.
>
> Greg

I have to disagree. It's one thing to create the initial empty databases
and yet another to migrate them all. These should be kept separate just
as Jeff explained.

The normal workflow would be to (1) migrate your development database,
(2) prepare your test database (rake db:test:prepare), (3) run your
tests, and finally (4) migrate your production/staging database as part
of your deployment process/script.

You want your test database to begin in a known state, which is what
db:test:prepare gives you. You want to migrate your development database
forward for experimentation. And you only want to migrate your
production database after all tests pass and your ready to deploy a
release.
059ed46172a087063ce26250e44c8627?d=identicon&s=25 Fernando Perez (fernando)
on 2009-02-19 18:47
> The normal workflow would be to (1) migrate your development database,
> (2) prepare your test database (rake db:test:prepare), (3) run your
> tests, and finally (4) migrate your production/staging database as part
> of your deployment process/script.

For f*!k sake!!! I just wasted 2 hours banging my head on the table, I
had forgotten to do RAILS_ENV=test rake db:migrate!!!

How in heck can people say that the migration of test_db and dev_db have
to be kept separate? These 2 DBs must be in sync (tables, columns) at
all time.
D188e591eac11021329b8821a5f954c7?d=identicon&s=25 Ar Chron (railsdog)
on 2009-02-19 19:01
> How in heck can people say that the migration of test_db and dev_db have
> to be kept separate? These 2 DBs must be in sync (tables, columns) at
> all time.

Hardly...  I want my QA people working on their tests for the last set
of changes I gave them.

Once the test DB is migrated, and MY tests pass, then they have at it
with their oh so wonderfully oddball "Well, what if I do this?"
scenarios...

In the meantime, I want to continue on with my work.
This topic is locked and can not be replied to.