1

I'm currently trying to perform some tests on a rails app that has two database connections. As of course I wouldn't like to delete the 2nd database each time I perform a test, I have set up a mechanism to connect to another 2nd-DB if the environment is "test" (see below).

My question: How could I tell rake test to also perform a rake db:test:prepare on the 2nd DB?

This query already touched my problem but couldn't help me completely.

Some code to explain:

My ActiveRecord-Classes that connect to the 2nd db inherit from the following class InformixConnect:

class InformixConnect < ActiveRecord::Base
  self.abstract_class = true
  case Rails.env
    when 'production', 'development'
      establish_connection :development_informix
    when 'test'
      establish_connection :test_informix_dummy
    else
      raise "Please specify a correct informix Environment."
  end

end

like

class RenewalNotify < InformixConnect

  set_table_name :renewal_notify
  set_primary_key :renewal_notify_id

end

(yes, I know... The schema does not follow the rails conventions. It's a legacy one)

database.yml contains

...
development:
    adapter:    postgresql
    database:   rails_development
    host:   127.0.0.1
    reconnect: true
    username: rails
    password: guessone

...
development_informix:
  adapter: informix
  database: SOMETHING
  username: yyy
  password: yyy

test_informix_dummy:
  adapter: sqlite3
  database: db/test_informix_dummy.sqlite3
...

# Warning: The database defined as 'test' will be erased and
# re-generated from your development database when you run 'rake'.
# Do not set this db to the same as development or production.
test: &TEST
  adapter: sqlite3
  database: db/test.db
  verbosity: silent
  timeout: 5000

So I'd need to setup the "test_informix_dummy" db each time I perform a rake test

Community
  • 1
  • 1
fenton
  • 134
  • 6
  • To run the rake task in class InformixConnect try the following way imediately after u connect the second dataase Windows: system('start rake db:prepare') Linux: system('rake db:prepare') – Raghu Feb 28 '12 at 17:08
  • Wouldn't this cause to reset the database at each connection? I assume you mean to enter this only in the Rails.env == 'test' case. – fenton Feb 28 '12 at 17:13
  • Right !!add this in the case when the rails env is test !! and make sure only the second DB is being used when the env is test – Raghu Feb 28 '12 at 18:13

0 Answers0