https://github.com/dmathieu/smart_config
A DLS for reading and accessing static configuration
https://github.com/dmathieu/smart_config
Last synced: 12 months ago
JSON representation
A DLS for reading and accessing static configuration
- Host: GitHub
- URL: https://github.com/dmathieu/smart_config
- Owner: dmathieu
- License: mit
- Created: 2024-02-27T08:39:04.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-06-24T06:54:16.000Z (12 months ago)
- Last Synced: 2025-06-24T07:35:06.050Z (12 months ago)
- Language: Ruby
- Size: 94.7 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Smart Config
We have "smart" toothbrushes these days, so why not smart configuration?
**Note**: As you can see in the version number, this gem is still in a very early version, and you should expect that there may be breaking changes until we reach 1.0.
## Usage
Smart Config allows you to define a static configuration and access it from anywhere within your application.
It will try to read the configuration from a YAML file, and fallback on environment variables.
### Installation
Add the `smart_config` dependency to you Gemfile:
```
gem 'smart_config'
```
### Usage
Then, create a new config class that, and define the configuration you need:
```ruby
class Config
extend SmartConfig::Config
# Optional. Will default to `config/config.yml`
config_path 'config/app_config.yml'
value :app_name, default: 'My App'
group :smtp do
value :hostname
value :port, format: :integer
value :username
value :password
end
group :redis do
group :connection do
value :hostname
value :port
value :username
value :password
end
value :timeout
end
end
```
Then, within your application, you can call:
```
Config.redis.connection.hostname
```
To access the configuration value, from the following YAML file for example:
```yaml
redis:
connection:
hostname: 'localhost'
```
For values that are not in the YAML config, the tool will try reading it from environment variables, such as (from the previous configuration):
```
REDIS_CONNECTION_PASSWORD
```
#### Value Options
Values can use options, which can be set after the value name. For example:
```ruby
value :hostname, default: 'localhost'
```
All available options are:
| name | description |
|-----------|----------------------------------------------------------------------------------------------------------------------------------------------------|
| default | Sets a default value for the field, if no configuration could be found. If this option is not set, getting an unset field will raise an exception. |
| format | Sets the format of the field. If this option is not set, the field will be formatted as string. |