On Tue, Feb 4, 2014 at 12:17 PM, tkrd <[email protected]> wrote:

Xavier, you wrote that we are not supposed to run migrations with
> RAILS_ENV=test, but the Rails itself occasionally prompts us to do it.
>
> For example, when I run rspec command having pending migrations on test
> environment, the Rails emits the following message:
>
> > Migrations are pending. To resolve this issue, run:
> >
> > bin/rake db:migrate RAILS_ENV=test
>
> This message is embedded in /activerecord/lib/active_record/migration.rb.
>
> I am not sure if this message is a correct instruction or not, though.
>

I believe that message is not consistent with the golden path.

The big guidelines here are:

* Migrations run to evolve the schema. As a side-effect, running them
generates db/schema.(rb|sql).

* The test environment should always start afresh, the test database is
considered to be transient by design, gets trashed and rebuilt, and
therefore has no evolutive maintenance.

* Because of that, the test environment setup is designed around
db/schema.(rb|sql), not around migrations. You need to get
db/schema.(rb|sql) right *first*, then run the suite.

* The interface to that workflow is encoded via rake tasks. The test
environment setup loads the current schema. If you go always through rake
tasks everything works out of the box as long as the schema is in sync with
migrations. If it isn't, you need to run migrations in the development
environment to update the schema (and to have an up to date schema in the
development database of course).

* If for some reason you prefer not to go through rake tasks for running
tests, that's a little deviation from the point of view of the Rails
interface, but the point closer to the golden path is to load the schema by
hand (db:schema:load), not to run migrations in the test environment.

So, yeah, from my perspective that message is not pointing in the right
direction.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to