Db:migrate error on test after Rails 4.2 update

I updated to rails 4.2 from 4.1 recently. Not sure if that fact is
related
to my problem or not. I have not run any tests since before update.
Now
attempting to run a controller test give me the error:
‘migrations are pending’ with recommendation to run: bin/rake db:migrate
RAILS_ENV=test

when I run migrate on test I get error:
PGDuplicateTable relation ‘users’ already exists

If I run migration on production I do not get error. If I run the
following:
bundle exec rake db:migrate:reset RAILS_ENV=test
I can then run the test once, but trying to re-run gives me the
migration
pending error again.

Incidentally, my first project migration in migrations directory creates
users table:
class DeviseCreateUsers < ActiveRecord::Migration
def change
create_table(:users) do |t|

This is my first rails app so I am wondering what is causing this and
how
to resolve. Any ideas?

background: I am developing on windows 7 with rspec testing and Postgres
database if any of that matters.

try this: bundle exec rake db:drop db:create db:migrate db:test:prepare

Att,

[image: --]
Antonio Augusto
[image: http://]Antonio Augusto - Algar Telecom, Vivo, TIM, Claro, COMCEL, Teltools Tecnologia, BS in CompSci | about.me
http://about.me/aaugusto?promo=email_sig

https://www.facebook.com/augustobr https://twitter.com/xtrdev
http://br.linkedin.com/in/antoniobr/ https://github.com/antoniosb
[image:
Antonio Augusto - Algar Telecom, Vivo, TIM, Claro, COMCEL, Teltools Tecnologia, BS in CompSci | about.me] http://about.me/aaugusto
https://plus.google.com/u/0/111953897116031502239/

2015-01-29 14:51 GMT-02:00 Sean K. [email protected]:

Thanks. Your command line affects development db also which is not
ideal.
I looked up db:test:prepare and it appears to be deprecated in 4.2

I decided to try it anyway with RAILS_ENV=test but I get same error of
duplicate table ‘users’ so I tried without the test env set and I get db
connection is closed message for test.

On Friday, January 30, 2015 at 6:42:19 AM UTC-5, Antônio Augusto Sousa

On 30 January 2015 at 14:40, Colin L. [email protected] wrote:

On 30 January 2015 at 14:17, Sean K. [email protected] wrote:

Thanks. Your command line affects development db also which is not ideal. I
looked up db:test:prepare and it appears to be deprecated in 4.2

I think if you read that right through including /all/ the comments
you will find it has been un-deprecated again.

Colin

If I run:
bundle exec rake db:drop db:create db:migrate
I get error that db:migrate needs to be run with RAILS_ENV=test
if I
bundle exec rake db:drop db:create db:migrate RAILS_ENV=test
I get error regarding duplicate table again

If I delete db from postgres management screen then run
bundle exec rake db:drop db:create db:migrate RAILS_ENV=test
I can again run the test once, but the second time I get the error that
migrations are pending and to run db:migrate RAILS_ENV=test

I wonder why the act of running a simple test trigges this migration
message

On 30 January 2015 at 14:17, Sean K. [email protected] wrote:

Thanks. Your command line affects development db also which is not ideal. I
looked up db:test:prepare and it appears to be deprecated in 4.2

I decided to try it anyway with RAILS_ENV=test but I get same error of duplicate
table ‘users’ so I tried without the test env set and I get db connection is
closed message for test.

I presume your development db is up to date (so running migrate on
that does nothing).
What happens if you recreate the test db and then run migrate on it?
Does the migrate run successfully?

Colin

I put this in my test.rb file and it seems to have fixed the problem:

from: https://www.relishapp.com/rspec/rspec-rails/docs/upgrade

config.active_record.maintain_test_schema = false

I also commented out any pending migration checks in my rails_helper
file