Forum: Ruby on Rails Skipping a data migration for Test environment

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Ryan W. (Guest)
on 2007-04-10 19:41
(Received via mailing list)
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
Jason R. (Guest)
on 2007-04-10 19:52
(Received via mailing list)
def self.up
  unless RAILS_ENV="test"
    ... migration stuff ...
  end
end

Jason
Ryan W. (Guest)
on 2007-04-10 20:19
(Received via mailing list)
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
Ryan W. (Guest)
on 2007-04-11 01:03
(Received via mailing list)
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
Lionel B. (Guest)
on 2007-04-11 01:10
(Received via mailing list)
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

:-)
Ryan W. (Guest)
on 2007-04-11 01:29
(Received via mailing list)
>
> Hints :
>
1/ any value not nil or false is true
> 2/ var = value returns value

:-)
>

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. :)

The winner:

unless ENV['RAILS_ENV'] == "test"
   # migration stuff
end

Puuuurfect.
Jason R. (Guest)
on 2007-04-11 06:48
(Received via mailing list)
Yeah, I'll take partial responsibility for that, as I did only put in a
single '=' in my post. Sorry about that.

Jason
This topic is locked and can not be replied to.