Hanami supports different environments based on a
HANAMI_ENV environment variable.
HANAMI_ENV allows your code to act differently, depending on the environment.
HANAMI_ENV is not set, Hanami will fallback to checking
RACK_ENV. If neither variable is set, the environment defaults to
By convention, Hanami expects
HANAMI_ENV to be either
Use the following helpers if your code needs behave differently in different environments.
Hanami.env returns a symbol representing the current environment.
# HANAMI_ENV=development Hanami.env => :development
# HANAMI_ENV=test Hanami.env => :test
# HANAMI_ENV=production Hanami.env => :production
Hanami.env?(*names) returns true if the given name(s) match the current environment.
# HANAMI_ENV=development Hanami.env?(:development) => true Hanami.env?(:test) => false Hanami.env?(:production) => false
You can match on more than one environment:
# HANAMI_ENV=development Hanami.env?(:development, :test) => true
# HANAMI_ENV=test Hanami.env?(:development, :test) => true
# HANAMI_ENV=production Hanami.env?(:development, :test) => false
Environment specific app config
Config options that are environment specific can be set on the app class. For example:
# config/app.rb module Bookshelf class App < Hanami::App environment(:production) do # Production specific config or initialization config.middleware.use ProductionOnlyMiddleware end end end
See the app config guide for information on supported config options.
When deploying your application to production, set the
HANAMI_ENV environment variable to
In production, Hanami logs to standard out by default, using a structured JSON format with a log level of
:info rather than
:debug, which is used in development and test. See the logger guide for more detail.