Needed a simple configuration library for my gems. Made public so everyone can take advantage!
##Install [sudo] gem install simpleconf
##Usage
Simple Configuration
CONFIG = SimpleConf {
host "localhost"
port 80
blacklist [1,2,3]
}
CONFIG.host # localhost
CONFIG.port # 80
CONFIG.blacklist # [1,2,3]
Nested Configuration
CONFIG = SimpleConf {
server {
ip "0.0.0.0"
port 8080
}
workers 50
security {
admin {
only_from "127.0.0.1"
}
max_logins 5
}
}
CONFIG.server.ip # "0.0.0.0"
CONFIG.workers # 50
CONFIG.security.admin.only_from # "127.0.0.1"
CONFIG.security.max_logins # 5
Merging
default = SimpleConf {
host "localhost"
port 80
}
new_config = default.merge( #also merge!
SimpleConf {
port 9999
}
)
new_config.host # "localhost"
new_config.port # 9999
Overriding
config = SimpleConf {
host "localhost", :override => false
port 80
}
config.host "google.com"
config.host # Still "localhost"
config.port 9999
config.port # 9999
Lock configuration
default = SimpleConf(:init_only => true){
host "localhost"
}
default.port 80 #throws error!!!
File Configuration
# basic.conf
server "localhost"
ports [80, 8080, 3000]
auth {
user "mike"
pass "password"
}
# code.rb
conf = SimpleConf.load("basic.conf")
conf.server # localhost
conf.ports # [80, 8080, 3000]
conf.auth.user # mike
# etc
To see all examples/cases, see the spec file.