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
    'exports' option as following:

      package MyConfig;
      use Config::ENV 'FOO_ENV', exports => '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 <cho45@lowreal.net>

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