Hi,
I have what might be a silly question but is there any way to put some
of the database configuration information into a separate file? For
instance, in config/database.yml I have:
developer_database: &developer_database
adapter: mysql
username: me
password: something
host: 127.0.0.1
development:
<<: *developer_database
database: foobar_development
test:
<<: *developer_database
database: foobar_test
This was done so that the database names are standardised across
developers but the details of the actual database connection are
modifiable by the developer (another developer will alter just the
details in developer_database).
What I’d like is to have the ‘development’ and ‘test’ entries in
config/database.yml (which is checked into a SVN repository) and then
the ‘developer_database’ defined in a config/developer_database.yml
file (which is not checked in); both of these being loaded and
“merged” to get the appropriate database configurations.
Does that make sense? How else do people deal with this?
Matt
Matthew D. wrote:
host: 127.0.0.1
developers but the details of the actual database connection are
Matt
Rails mailing list
[email protected]
http://lists.rubyonrails.org/mailman/listinfo/rails
database.yml is parsed by ERb before yaml loads it. You can just do
this:
<%= File.read(“dev_db.yml”) %>
development:
<<: *developer_database
database: foobar_development
test:
<<: *developer_database
database: foobar_test
production:
adapter: mysql
username: etc
password: etcagain
blah: blah
–
Ola B. (http://ola-bini.blogspot.com)
JvYAML, RbYAML, JRuby and Jatha contributor
System Developer, Karolinska Institutet (http://www.ki.se)
OLogix Consulting (http://www.ologix.com)
“Yields falsehood when quined” yields falsehood when quined.
You can approach this a couple of ways. The database.yml file can hold
real ruby just like the other yml files so there are a couple of ways
to fix your problem:
- Put a file in a standard directory outside the svn repository and
have it read in.
- Use environment variables
I think I like the environment variables approach better since that is
how other “system” settings are set (like whether or not the system is
in production, test or development modes).
On 3-Aug-06, at 8:04 AM, Matthew D. wrote:
Hi,
I have what might be a silly question but is there any way to put some
of the database configuration information into a separate file? For
instance, in config/database.yml I have:
Splitting out the config into separate files seems overly complicated.
In all of my projects I simply have a database.yml-sample file
checked into svn and an svn:ignore set on database.yml. Each
developer simply copies database.yml-sample to database.yml and edits
it for their local environment.
HTH,
Trevor
Trevor S.
http://somethinglearned.com
On Aug 3, 2006, at 11:15 AM, Ola B. wrote:
host: 127.0.0.1
What I’d like is to have the ‘development’ and ‘test’ entries in
<<: *developer_database
JvYAML, RbYAML, JRuby and Jatha contributor
System Developer, Karolinska Institutet (http://www.ki.se)
OLogix Consulting (http://www.ologix.com)
“Yields falsehood when quined” yields falsehood when quined.
Or let the defaults stay in the database.yml, but allow an override
in a separate file that isn’t kept in the repository:
vvv Copy the following two YAML maps to a file called config/
mydatabase.yml
login: &login
username: default_user
password: default_password
connection: &connection
host: 127.0.0.1
port: 3306
^^^ Copy the previous two YAML maps to a file called config/
mydatabase.yml
<%= file = File.join(RAILS_ROOT, “config”, “mydatabase.yml”)
IO.read(file) if File.exist?(file) %>
development:
adapter: mysql
database: app_development
<<: *login
<<: *connection
The I can override the connection from TCP to, say, Unix socket where
I need to. I haven’t yet had to replace the adapter in this way, but
the same holds true. You could even leave the production as:
production:
adapter: mysql
database: app_production
username: production_user
password: production_password
host: localhost
socket: /tmp/mysql.sock
But I think it’s a good thing to keep the real user/password out of
the repository completely.
-Rob
Rob B. http://agileconsultingllc.com
[email protected]
On 8/3/06, Matthew D. [email protected] wrote:
I have what might be a silly question but is there any way to put some
of the database configuration information into a separate file?
Thanks for all the answers. I answered it myself about 10 minutes
after sending the email (I use the ERb idea) which just goes to show
that it should be a “measure twice, cut once” sort of world!
Matt