module LuckyEnv

Defined in:

lucky_env.cr
lucky_env/errors.cr
lucky_env/parser.cr

Constant Summary

VERSION = {{ (`shards version \"/home/runner/work/lucky_env/lucky_env/src\"`).chomp.stringify }}

Class Method Summary

Macro Summary

Class Method Detail

def self.development? : Bool #

[View source]
def self.environment : String #

[View source]
def self.load(file_path : String) : Hash(String, String) #

Parses the file_path, and loads the results in to ENV raises LuckyEnv::MissingFileError if the file is missing


[View source]
def self.load : Hash(String, String) #

Loads the appropriate environment file from the project root directory based on the value of ENV["LUCKY_ENV"].

This method attempts to read one of the following files depending on the environment:

  • .env.development for the development environment
  • .env.production for the production environment
  • .env.testing for the testing environment

Falls back to reading .env if no specific file is found for the current environment. raises LuckyEnv::MissingFileError if no environment file is found.


[View source]
def self.load?(file_path : String) : Hash(String, String) | Nil #

Returns nil if the file is missing


[View source]
def self.production? : Bool #

[View source]
def self.task? : Bool #

[View source]
def self.test? : Bool #

[View source]

Macro Detail

macro add_env(name) #

[View source]
macro init_env(path = ".env") #

Generates type-safe method definitions for env variables.

Usage: LuckyEnv.init_env or LuckyEnv.init_env "/path/to/env-file"

Env File:

LUCKY_ENV    = development
DEV_PORT     = 3500
ENABLE_CACHE = true

Output:

def LuckyEnv.lucky_env : String
  ENV["LUCKY_ENV"]
end

def LuckyEnv.dev_port : Int32
  ENV["DEV_PORT"].to_i
end

def LuckyEnv.enable_cache? : Bool
  ENV["enable_cache"] == "true"
end

[View source]