Models: Database Configuration


Environment variables

Before starting your server, you need to configure the database link in .env* files.

Open this file for each environment and update DATABASE_URL for your database.

Setup database variable for the development environment:

# .env.development
DATABASE_URL="database_type://username:password@localhost/bookshelf_development"

Setup database variable for the test environment:

# .env.test
DATABASE_URL="database_type://username:password@localhost/bookshelf_test"

For jdbc urls you can’t set username and password to the left of @ you have to set them as parameters in the url:

DATABASE_URL="jdbc-database_type://localhost/bookshelf_test?user=username&password=password"

Setup your database

After your database variables setup is done you need to create the database and run the migrations before being able to launch a development server.

In your terminal, enter:

$ bundle exec hanami db prepare

To setup your test environment database, enter:

$ HANAMI_ENV=test bundle exec hanami db prepare

Sequel plugins

Hanami models use ROM as a low-level backend. This means that you can easily use any Sequel plugins in your app. For this you need to define a gateway block in your model configuration, add the extension by calling extension on gateway.connection and pass the extension name in:

# config/environment.rb

Hanami.configure do
  model do
    gateway do |g|
      g.connection.extension(:connection_validator)
    end
  end
end