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.
2adeb44651be507a76aa6b988ff6ca41?d=identicon&s=25 Ryan Williams (Guest)
on 2007-04-10 17: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
83ca41657a99b65d99889abe712ba5e2?d=identicon&s=25 Jason Roelofs (Guest)
on 2007-04-10 17:52
(Received via mailing list)
def self.up
  unless RAILS_ENV="test"
    ... migration stuff ...
  end
end

Jason
2adeb44651be507a76aa6b988ff6ca41?d=identicon&s=25 Ryan Williams (Guest)
on 2007-04-10 18: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 Roelofs <jameskilton@gmail.com> wrote:
> >
> >
>
--
Ryan Williams
Lead Developer
Capocus!
http://abra.capoc.us
Productive Web Publishing
2adeb44651be507a76aa6b988ff6ca41?d=identicon&s=25 Ryan Williams (Guest)
on 2007-04-10 23: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 Williams <lists@capoc.us> 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 Williams
Lead Developer
Capocus!
http://abra.capoc.us
Productive Web Publishing
Bef7ff8a0537495a1876ffebdc9f8e51?d=identicon&s=25 Lionel Bouton (Guest)
on 2007-04-10 23:10
(Received via mailing list)
Ryan Williams 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

:-)
2adeb44651be507a76aa6b988ff6ca41?d=identicon&s=25 Ryan Williams (Guest)
on 2007-04-10 23: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.
83ca41657a99b65d99889abe712ba5e2?d=identicon&s=25 Jason Roelofs (Guest)
on 2007-04-11 04: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.