Hello folks, I''d like to use postgresql with unix domain sockets for testinng/development to avoid mismatches when tests from multiple working copies are run concurrently. I can almost get what I want with the following entry in config/database.yml: test: adapter: postgresql encoding: unicode database: testapp_test username: password: host: /home/ruby/rails/testapp/db/pgdata Unfortunately, the path is specified absolutely here. So when I check out two working copies of my application and run the tests in parallel on both copies, the database will get mangled. So I am looking for a possibility to specify the directory relatively. Maybe host: `pwd`/db/pgdata or host: #{RAILS_DIR}/db/pgdata or something. Can this (or something similar) be done? Any suggestions?
Stephan Wehner
2009-Sep-02 22:02 UTC
Re: How to specify working directory in config/database.yml?
Josef Wolf wrote:> Hello folks, > > I''d like to use postgresql with unix domain sockets for > testinng/development > to avoid mismatches when tests from multiple working copies are run > concurrently. > > I can almost get what I want with the following entry in > config/database.yml: > > test: > adapter: postgresql > encoding: unicode > database: testapp_test > username: > password: > host: /home/ruby/rails/testapp/db/pgdata > > Unfortunately, the path is specified absolutely here. So when I check > out > two working copies of my application and run the tests in parallel on > both > copies, the database will get mangled. > > So I am looking for a possibility to specify the directory relatively. > Maybe > > host: `pwd`/db/pgdata > > or > > host: #{RAILS_DIR}/db/pgdata > > or something. > > Can this (or something similar) be done? Any suggestions?Since config/database.yml is read through ERB, you can do stuff like host: <%= RAILS_DIR %>/db/pgdata or host: <%= `hostname` %> Check vendor/rails/railties/lib/initializer.rb, this is from Rails 2.3: # Loads and returns the contents of the #database_configuration_file. The # contents of the file are processed via ERB before being sent through # YAML::load. def database_configuration require ''erb'' YAML::load(ERB.new(IO.read(database_configuration_file)).result) end -- Posted via http://www.ruby-forum.com/.
Josef Wolf
2009-Sep-03 18:59 UTC
Re: How to specify working directory in config/database.yml?
On Thu, Sep 03, 2009 at 12:02:05AM +0200, Stephan Wehner wrote:> Josef Wolf wrote:Thanks for your help, Stephan!> > So I am looking for a possibility to specify the directory relatively. > > host: `pwd`/db/pgdata > > or > > host: #{RAILS_DIR}/db/pgdata > > or something. > > Since config/database.yml is read through ERB, you can do stuff like > > host: <%= RAILS_DIR %>/db/pgdataYeah, this works fine when I use RAILS_ROOT instead of RAILS_DIR.> host: <%= `hostname` %>Backticks don''t seem to work here. I get a syntax error when I try it: ** Invoke db:create (first_time) ** Invoke environment (first_time) ** Execute environment rake aborted! syntax error on line 22, col 9: ` # port: 5432'' /usr/lib64/ruby/1.8/yaml.rb:133:in `load'' /usr/lib64/ruby/1.8/yaml.rb:133:in `load'' /usr/lib64/ruby/gems/1.8/gems/rails-2.1.1/lib/initializer.rb:716:in ** `database_configuration'' Where line 22 is the first line after the backtick that does _not_ start with a comment.
Stephan Wehner
2009-Sep-03 19:24 UTC
Re: How to specify working directory in config/database.yml?
Josef Wolf wrote:> On Thu, Sep 03, 2009 at 12:02:05AM +0200, Stephan Wehner wrote: >> Josef Wolf wrote: > Thanks for your help, Stephan! > >> > So I am looking for a possibility to specify the directory relatively. >> > host: `pwd`/db/pgdata >> > or >> > host: #{RAILS_DIR}/db/pgdata >> > or something. >> >> Since config/database.yml is read through ERB, you can do stuff like >> >> host: <%= RAILS_DIR %>/db/pgdata > > Yeah, this works fine when I use RAILS_ROOT instead of RAILS_DIR. > >> host: <%= `hostname` %>Try>> host: <%= `hostname`.chomp %>> > Backticks don''t seem to work here. I get a syntax error when I try it: > > ** Invoke db:create (first_time) > ** Invoke environment (first_time) > ** Execute environment > rake aborted! > syntax error on line 22, col 9: ` # port: 5432'' > /usr/lib64/ruby/1.8/yaml.rb:133:in `load'' > /usr/lib64/ruby/1.8/yaml.rb:133:in `load'' > /usr/lib64/ruby/gems/1.8/gems/rails-2.1.1/lib/initializer.rb:716:in > ** `database_configuration''I couldn''t reproduce this, but chomp should help Stephan> > Where line 22 is the first line after the backtick that does _not_ start > with a comment.-- Posted via http://www.ruby-forum.com/.