Strange behavior with using webrat in requests tests

Good morning,

I am using Rails3 (beta4) and RSpec2 (beta 15) under RVM and am running
into
an interesting issue.

My request tests using webrat seem to think that they are running in the
development Rails environment (I know this because I get all kinds of
entries in the development log) and that is messing with Factory Girl
(the
factory_girl_rails gem).

If I run “env” from the OSX command line, I have an entry for RAILS_ENV

development.

After some poking around, I found the line:
ENV[“RAILS_ENV”] ||= ‘test’

in the spec_helper.rb file. I figured that this might be why webrat runs
in
the development environment since the above line won’t do anything if
RAILS_ENV is already set (which it is).

If I remove the “||” from the above line, everything seems to work fine
and
webrat now stops putting stuff into the development log and puts stuff
into
the test log and the strangeness with factory_girl_rails goes away.

I would like to confirm that removing the “||” from the spec_helper.rb
file
isn’t going to mess with anything later down the road ro get an
explanation
as to why one wouldn’t want to always force RAILS_ENV to be equal to
“test”
when running specs.

Thanks,
Mike

On Jul 6, 2010, at 10:43 AM, Mike Gehard wrote:

Good morning,

I am using Rails3 (beta4) and RSpec2 (beta 15) under RVM and am running into an interesting issue.

My request tests using webrat seem to think that they are running in the development Rails environment (I know this because I get all kinds of entries in the development log) and that is messing with Factory Girl (the factory_girl_rails gem).

If I run “env” from the OSX command line, I have an entry for RAILS_ENV = development.

Why do you have that? I’d get rid of this if you don’t need it for
something explicit.

After some poking around, I found the line:
ENV[“RAILS_ENV”] ||= ‘test’

in the spec_helper.rb file. I figured that this might be why webrat runs in the development environment since the above line won’t do anything if RAILS_ENV is already set (which it is).

If I remove the “||” from the above line, everything seems to work fine and webrat now stops putting stuff into the development log and puts stuff into the test log and the strangeness with factory_girl_rails goes away.

I would like to confirm that removing the “||” from the spec_helper.rb file isn’t going to mess with anything later down the road ro get an explanation as to why one wouldn’t want to always force RAILS_ENV to be equal to “test” when running specs.

This shouldn’t mess with anything else downstream. The ||= is there so
you can set the environment to other special-case testing environments
like this:

RAILS_ENV=ci rake spec

HTH,
David