[rspec-users] anyone able to explain logic behind "rake spec" startup (e.g. db:test:prepare => abort_if_pending_migration => invoke environment => etc etc)
mark at mwilden.com
Thu Nov 6 17:13:19 EST 2008
On Thu, Nov 6, 2008 at 1:07 PM, Greg Hauptmann <
greg.hauptmann.ruby at gmail.com> wrote:
> I'm still a bit confused - I'll try to be more specific in questions:
> * rake db:test:prepare - Check for pending migrations and load the test
> ==> Q1. DOES NOT RUN IN PENDING MIGRATIONS TO TEST DATABASE?
Correct. It runs no migrations, period. It will abort if there are pending
migrations for the development database.
> ==> Q2. RE TEST SCHEMA - ARE THE MIGRATIONS USE TO CREATE THE
> DATABASE OR THE DEVELOPMENT SCHEMA FILE???
The development schema file, which db:test:prepare creates.
> ==> Q3. WHY DOES IT HAVE TO BE CALLED MORE THAN ONCE?
I didn't know it did have to be called more than once. :)
> * rake db:test:load - Recreate the test database from the current schema.rb
> ==> Q4. WHY DO WE NEED TO LOAD FROM THE SCHEMA RATHER THAN
> MIGRATIONS? IS IT TO AVOID ANY DATA BEING LOADED BY MIGRATIONS FOR
> THE TEST DATABASE?
The main reason, I believe, is for speed. The thinking is that there's
nothing in the test database that needs to be saved, whereas, you might have
pseudo-real-world data in your development database that you don't want to
repopulate. Therefore, the test db is created from scratch, but the
development (and production) dbs are migrated.
> ==> Q5. WHY IS IT RUN MULTIPLE TIMES?
Is that what you're seeing? I assume you're running 'rake db:test:prepare
* rake db:test:purge - Empty the test database
> => Q6. WHY IS IT RUN MULTIPLE TIMES?
> => Q7. DOES IT DROP TABLES ALSO?
I haven't looked into those tasks, myself.
Probably the very best way to answer these questions is to have a look at
lib/tasks/databases.rake in your Rails framework directory.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the rspec-users