How does rake decide which database to modify?

Hi All,

I created an 001-xxx initial migration and updated it with results of a
schema::dump, removing the :force => true.

Then I ran rake migrate and (as documented) rake added a schema_info table
with version=0.

I've got three databases defined in database.yml using scripting I found in
Rails Recipes #17.

I defined columns only for the development database.

Happily, rake went to the development database both to dump the schema and
add the schema_info table.

Question: How did rake decide to use that database rather than test or
production?

Is it because development is specified first in the yml file?

Is it because development is the only one with tables?

Is it because there's a setting somewhere that defaults to development but
can be modified to target other databases?

I'm running WinXP-Pro/SP2, Ruby 1.8.2-15, Rails 1.1.4, MySQL 5.0.15-nt,
SciTE 1.59, FireFox 1.2.0.7, Java JDK 1.5.0_06

Thanks in Advance,

Richard

Morning (i still haven't had that cup of coffee)

I believe you set this using the RAILSENV=production parameter for rake,
and that the default is development. I cannot find reference to this
specifically at the moment - if anyone can point me to a link
documenting the use of RAILSENV I will really appreciate it.

The command that I have used is:

rake db:migrate RAILSENV=production when migrating to production
environment.

Ivor

Richard Lionheart wrote:

Hi!

Hi All,

[..]

Happily, rake went to the development database both to dump the schema and
add the schema_info table.

Question: How did rake decide to use that database rather than test or
production?

Is it because development is specified first in the yml file?
Is it because development is the only one with tables?
Is it because there's a setting somewhere that defaults to development but
can be modified to target other databases?

Rails defaults to the development environment (and therefore the
development database). You can switch to production by setting the
RAILS_ENV environment variable to 'production'. The test evironment is
used automatically for running testcases.

You can, however, specify additional database connections in
database.yml, and explicitly tell activerecord to use these:

class FromOtherDb < ActiveRecord::Base
  establish_connection configurations['otherdb']
end

Jens

Hi Ivor and Jens,

Thanks for your responses. It's 2:43am my time so I'm going to crash
for the night. I'll try all your approaches tomorrow.

Best wishes,
Richard

Richard Lionheart wrote:

Hi Jens and Ivor,

Ivor, I used your RAILS_ENV=test clause (not the underscore!) and it
created my (empty) test database.

Jens,

I saved your input. I'm not ready for a more sophisticated approach at
this time.

Thank you both very much for your responses. I couldn't find any
documention for this issue through Google searches.

Best wishes,
Richard

Richard Lionheart wrote: