Skipping a data migration for Test environment


#1

Hi all,

I’m loading fixture data via migrations into my application using the
method
described in the Agile book. This works beautifully for development and
production environments. The only problem is, I don’t want these
particular
migrations to run when I do rake db:migrate RAILS_ENV=test. For one,
there
is no reason to being loading data into the test db. And, more
problematic
for me, this causes foreign key constraint errors which abort the rake
with
the test db because I’m using Redhillonrails’ foreign_key_migrations
plugin.

Any tips?

Thanks!

Ryan


#2

def self.up
unless RAILS_ENV=“test”
… migration stuff …
end
end

Jason


#3

Yep, works perfectly. I had tried that but got the syntax wrong
apparently.
Thanks Jason!

On 4/10/07, Jason R. removed_email_address@domain.invalid wrote:


Ryan W.
Lead Developer
Capocus!
http://abra.capoc.us
Productive Web Publishing


#4

Actually, I spoke too soon. This code doesn’t actually work. I thought
it
did because the argument passed, but it just ignored the migration on
all
environments. It seems that rake pulls RAILS_ENV from the actual setting
in
the application, not from the option passed at the command line (rake
db:migrate RAILS_ENV=test), which only seems to change the db it’s
acting
upon. Someone tell me if I’m wrong.

I also tried this, which also skips the migration on all environments:

unless ENV[‘RAILS_ENV’] = “test”

migration stuff

end

and, the following caused all three environments to run the migration.

if ENV[‘RAILS_ENV’] = “development” || “production”

migration stuff

end

which I assumed was because the application is set to development. But
for
some crazy reason, this runs the migration on all environments as well!:

if ENV[‘RAILS_ENV’] = “production”

migration stuff

end

That, just doesn’t make sense. Anyone?

On 4/10/07, Ryan W. removed_email_address@domain.invalid wrote:

end

particular migrations to run when I do rake db:migrate RAILS_ENV=test. For

Capocus!
http://abra.capoc.us
Productive Web Publishing


Ryan W.
Lead Developer
Capocus!
http://abra.capoc.us
Productive Web Publishing


#5

Hints :

1/ any value not nil or false is true

2/ var = value returns value

:slight_smile:

Hahaha! Oh man… I was way over analyzing that one. Jeez… thanks
for
the Programming 101 kick in the arse Lionel. Step away from coding for a
month and my mind goes to mush on the basics. :slight_smile:

The winner:

unless ENV[‘RAILS_ENV’] == “test”

migration stuff

end

Puuuurfect.


#6

Ryan W. wrote the following on 10.04.2007 23:02 :

migration stuff

well!:

if ENV[‘RAILS_ENV’] = “production”

migration stuff

end

That, just doesn’t make sense. Anyone?

I’ve only 2 bytes for you :

Hints :
1/ any value not nil or false is true
2/ var = value returns value

:slight_smile:


#7

Yeah, I’ll take partial responsibility for that, as I did only put in a
single ‘=’ in my post. Sorry about that.

Jason