Question about environments and rake

Hi,

Short version:
How do I specify an environment (as in, development, production, or in
my case, a custom environment) to the command ‘rake db:migrate?’

Long version:
A friend and I are putting together a web app using Ruby on Rails. We
wanted to both have our own development instances running to play
with, each that could be configured slightly differently. So what we
ended up doing was creating two environments – user1_development, and
user2_development – with their own environment files, and their own
listings in config/databases.yml. We wanted each of these instances to
have their own databases, so the entry in databases.yml for
user1_development, for instance, is identical to that for the
“development” environment, except instead of the database being named
“projectname_development” it’s named “projectname_user1_development.”

We’re using mongrel and each have our own mongrel_cluster.yml files
that specify our respective environments, so that all works fine.

The problem is with rake db:migrate. I cannot figure out how to get
rake to run in a custom environment; so, for instance, when I do a
rake db:migrate, I don’t know how to get it to migrate database
“projectname_user1_development” instead of “projectname_development.”
Does anyone have any idea how to do this?

Thanks very much,
Paul Eastlund

Short version:
How do I specify an environment (as in, development, production, or in
my case, a custom environment) to the command ‘rake db:migrate?’

rake db:migrate RAILS_ENV=production

Long version:
A friend and I are putting together a web app using Ruby on Rails. We
wanted to both have our own development instances running to play
with, each that could be configured slightly differently. So what we
ended up doing was creating two environments – user1_development, and
user2_development – with their own environment files, and their own
listings in config/databases.yml. We wanted each of these instances to

Is the only difference b/n your sites database.yml? Is so, why not
commit
a database.yml-sample and then svn-ignore database.yml and just set it
to
what you want.

That works well for us… and allows us to all use “development”…

Not saying you have to, just pointing out another option.

On Nov 2, 2007 7:03 PM, Philip H. [email protected] wrote:

Short version:
How do I specify an environment (as in, development, production, or in
my case, a custom environment) to the command ‘rake db:migrate?’

rake db:migrate RAILS_ENV=production

Thanks for the tip! This worked like a charm.

Is the only difference b/n your sites database.yml? Is so, why not commit
a database.yml-sample and then svn-ignore database.yml and just set it to
what you want.

That works well for us… and allows us to all use “development”…

Not saying you have to, just pointing out another option.

Thanks for the suggestion. No, there’s also some minor differences
between
our config/environments files. The chief other issue was this: I want to
have a non-secure page that contains a form that the user can fill
secure
data into. In HTML terms, this just means that the form tag needs a URL
that
starts with “https://” but there’s no way to specify the protocol
without
specifying the domain, which means each of our apps needs to know the
domain
it’s being hosted at. Since Rails has no knowledge of this already, and
the
two apps are at slightly different domains, we put this data in the
environment files – so config/environments/user1.rb has the line
DOMAIN="
user1.oursite.com", for instance. It’s a little bit of a hack, but we
searched around online and couldn’t find a prettier solution. Please let
me
know if you have one.

-Paul


Paul Ragnar Eastlund

Me: (relating a joke) “…so I said, ‘I’m working at Google. I’m the guy
who
frantically does research when you type in a query.’”
Lorraine: “Oh.” (long pause) “But is that really what you do?”
Sharon: “…And now, the joke is on you.”