Search code examples
ruby-on-railspostgresqlnitrousio

Unable to create database on Nitrous.io


I have successfully created on app on nitrous.io and initialised the postgres database for that app. I am now trying to configure the database for a second app on the same box.

When I run bundle exec rake db:create for the new app, I get the following error message

rake aborted!
development database is not configured /home/action/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_specification.rb:39:in `resolve_string_connection'
/home/action/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_specification.rb:25:in `spec'
/home/action/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-3.2.13/lib/active_record/connection_adapters/abstract/connection_specification.rb:130:in `establish_connection'
/home/action/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-3.2.13/lib/active_record/railties/databases.rake:63:in `block (2 levels) in <top (required)>'
Tasks: TOP => db:create
(See full trace by running task with --trace)

If I run bundle exec rake db:create:all, I get the following error message:

rake aborted!
undefined method `[]' for nil:NilClass
/home/action/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-3.2.13/lib/active_record/railties/databases.rake:50:in `block (4 levels) in <top (required)>'
/home/action/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-3.2.13/lib/active_record/railties/databases.rake:38:in `each_value'
/home/action/.rvm/gems/ruby-2.0.0-p247/gems/activerecord-3.2.13/lib/active_record/railties/databases.rake:38:in `block (3 levels) in <top (required)>'
Tasks: TOP => db:create:all
(See full trace by running task with --trace
So what is the correct method to create the database?

My db/database.yml file is as follows:

# database configuration for Nitrous.io
development:
adapter: postgresql
encoding: unicode
database: better_life-dev
pool: 5
host: localhost
username: action
password:
  # Connect on a TCP socket. Omitted by default since the client uses a
  # domain socket that doesn't need configuration. Windows does not have
  # domain sockets, so uncomment these lines.
  #host: localhost

  # The TCP port the server listens on. Defaults to 5432.
  # If your server runs on a different port number, change accordingly.
  #port: 5432

  # Schema search path. The server defaults to $user,public
  #schema_search_path: myapp,sharedapp,public

  # Minimum log levels, in increasing order:
  #   debug5, debug4, debug3, debug2, debug1,
  #   log, notice, warning, error, fatal, and panic
  # Defaults to warning.
  #min_messages: notice
# 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:
adapter: postgresql
database: better_life-test
pool: 5
host: localhost
username: action
password:

production:
  adapter: postgresql
  encoding: unicode
  database: better_life-prod
  pool: 5
  host: localhost
  username: action
  password:

Solution

  • You will want to ensure you have indented each setting two spaces for your config/database.yml file. Try using these settings with the exact formatting:

    development:
      adapter: postgresql
      encoding: unicode
      database: better_life-dev
      pool: 5
      host: localhost
      username: action
      password:
    
    test:
      adapter: postgresql
      database: better_life-test
      pool: 5
      host: localhost
      username: action
      password:
    
    production:
      adapter: postgresql
      encoding: unicode
      database: better_life-prod
      pool: 5
      host: localhost
      username: action
      password: