NAME
   Config::ENV - Various config determined by %ENV

SYNOPSIS
     package MyConfig;

     use Config::ENV 'PLACK_ENV'; # use $ENV{PLACK_ENV} to determine config

     common +{
       name => 'foobar',
     };

     config development => +{
       dsn_user => 'dbi:mysql:dbname=user;host=localhost',
     };

     config test => +{
       dsn_user => 'dbi:mysql:dbname=user;host=localhost',
     };

     config production => +{
       dsn_user => 'dbi:mysql:dbname=user;host=127.0.0.254',
     };

     config production_bot => +{
       parent('production'),
       bot => 1,
     };

     # Use it

     use MyConfig;
     MyConfig->param('dsn_user'); #=> ...

DESCRIPTION
   Config::ENV is for switching various configurations by environment
   variable.

CONFIG DEFINITION
   use this module in your config package:

     package MyConfig;
     use Config::ENV 'FOO_ENV';

     common +{
       name => 'foobar',
     };

     config development => +{};
     config production  => +{};

     1;

   common($hash)
       Define common config. This $hash is merged with specific environment
       config.

   config($env, $hash);
       Define environment config. This $hash is just enabled in $env
       environment.

   parent($env);
       Expand $env configuration to inherit it.

   load($filename);
       `do $filename` and expand it. This can be used following:

         # MyConfig.pm
         common +{
           API_KEY => 'Set in config.pl',
           API_SECRET => 'Set in config.pl',
           load('config.pl),
         };

         # config.pl
         +{
           API_KEY => 'XFATEAFAFASG',
           API_SECRET => 'ced3a7927fcf22cba72c2559326be2b8e3f14a0f',
         }

 EXPORT
   You can specify default export name in config class. If you specify
   'export' option as following:

     package MyConfig;
     use Config::ENV 'FOO_ENV', export => 'config';

     ...;

   and use it with 'config' function.

     package Foobar;
     use MyConfig; # exports 'config' function

     config->param('...');

METHODS
   config->param($name)
       Returns config variable named $name.

   $guard = config->local(%hash)
       This is for scope limited config. You can use this when you use
       other values in temporary. Returns guard object.

         is config->param('name'), 'original value';
         {
           my $guard = config->local(name => 'localized');
           is config->param('name'), 'localized';
         };
         is config->param('name'), 'original value';

   config->env
       Returns current environment name.

   config->current
       Returns current configuration as HashRef.

AUTHOR
   cho45 <[email protected]>

SEE ALSO
LICENSE
   This library is free software; you can redistribute it and/or modify it
   under the same terms as Perl itself.