[Feature Request] Force test schema to be up to date when running tests

35 views
Skip to first unread message

Ryan Jones

unread,
Jun 28, 2016, 4:19:29 PM6/28/16
to Ruby on Rails: Core
Every so often I'll run a test suite and it will have a large number of failures. After debugging it's normally something as simple as the test schema being out of date. I then run bin/rake db:test:prepare and everything is fine.

If I run my development environment and my schema is out of date, it throws an error and forces me to run bin/rake db:migrate. Should we be doing the same thing when we're running tests? Or at the very least maybe throwing a warning that the test schema is 'out of date'?

On one of the first apps I was building (a few years ago) I remember spending a few hours tracking down why my test was failing. I was new to 'TDD' and I thought it was something I was doing wrong. I called a friend and he asked 'did you run db:test:prepare?' and that solved my problem. I don't run into this issue as much anymore, but I think it might prevent some frustration by new rails users.

I'm trying to think of why we wouldn't be doing this and my mind is coming up blank. Let me know your thoughts!

Thanks,
Ryan


Chad Woolley

unread,
Jun 28, 2016, 4:32:37 PM6/28/16
to Ruby on Rails: Core
+1, this is one of a few things that doesn't "work out of the box" for databases in real-world usage.  I always end up having some version of a custom "db:prepare" which does extra necessary things for my apps.

FYI, this thread is somewhat related, in that it's also about confusion about the behavior of the 'test' environment (and also unaddressed): https://groups.google.com/forum/#!searchin/rubyonrails-core/environment$20agnostic/rubyonrails-core/kqKoJHcQu9U/xx9J2BLOBgAJ

-- Chad

--
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 rubyonrails-co...@googlegroups.com.
To post to this group, send email to rubyonra...@googlegroups.com.
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Rafael Mendonça França

unread,
Jun 28, 2016, 4:52:53 PM6/28/16
to Ruby on Rails: Core
Automatic test schema maintainance is a feature of Rails since 4.1 http://guides.rubyonrails.org/4_1_release_notes.html#railties-notable-changes

Chad Woolley

unread,
Jun 29, 2016, 2:52:13 PM6/29/16
to rubyonra...@googlegroups.com
Ah. My problems may be that I don't generate that test helper by default, and thus the call never makes it into my rspec setup.

Is this your issue Ryan?  If so maybe you can confirm that the rspec generator properly adds this support, and if not, add it.

-- Chad
Reply all
Reply to author
Forward
0 new messages