How can I run a line of rails code within the "test.rb" environment file?


#1

Hi,

How to I get a rails line of code that normally works within a rails
mode, but but have it run within “test.rb” environment file. For
example to get the following to run:

RecurringType.create(:name => “TYPE_BASIC”)

PS. Or in general how to get a normal rails line of code to run in the
“test.rb” file (i.e. only for when starting up in test mode). I get
“ActiveRecord::ConnectionNotEstablished” when I include
“RecurringType.create(:name => “TYPE_BASIC”)”.

thanks


#2

On 6 Nov 2008, at 09:08, Greg H. wrote:

“test.rb” file (i.e. only for when starting up in test mode). I get
“ActiveRecord::ConnectionNotEstablished” when I include
“RecurringType.create(:name => “TYPE_BASIC”)”.

You need to make your code run after the framework has been fully
initialized (which it isn’t when test.rb runs). Application
initializers (files in config/initializers) run after this as do
config.after_initialize blocks.

Fred


#3

thanks Fred - I hadn’t come across these before…

So can I create a “test.rb” file in the “initializers” directory such
that it would only run it for the “test” environment? Or if not what
would you recommend re approach to ensure the code was only run when
in a specific environment (e.g. ‘test’ in this case)?

Thanks

On Thu, Nov 6, 2008 at 8:17 PM, Frederick C.


#4

On 6 Nov 2008, at 10:27, Greg H. wrote:

thanks Fred - I hadn’t come across these before…

So can I create a “test.rb” file in the “initializers” directory such
that it would only run it for the “test” environment? Or if not what
would you recommend re approach to ensure the code was only run when
in a specific environment (e.g. ‘test’ in this case)?

stuff in config/initializers is always run, but you can of course
stick a if RAILS_ENV == ‘foo’ in there. I tend to keep the stuff in
their group by purpose.
The config.after_initialize thing wouldn’t require you to test what
the environment is.
Fred


#5

Fred - re “The config.after_initialize thing wouldn’t require you to
test what the environment is” - what do you mean by this? where would
the code go in this case such that there would be a way to have it
only run for the ‘test’ environment?

On Thu, Nov 6, 2008 at 8:45 PM, Frederick C.


#6

arr got it:

config.after_initialize do

xxx

end

On Thu, Nov 6, 2008 at 8:51 PM, Greg H.