Skip to content

Instantly share code, notes, and snippets.

@milann
Created March 26, 2009 12:02
Show Gist options
  • Save milann/86048 to your computer and use it in GitHub Desktop.
Save milann/86048 to your computer and use it in GitHub Desktop.
class AppServer
class AppServerConfig
attr_accessor :port, :admin_password
end
attr_accessor :config
def initialize
@config = AppServerConfig.new
end
end
class Configuration
attr_accessor :tail_logs, :max_connections, :admin_password, :app_server
def initialize
@app_server = AppServer.new
yield self
end
def app_server
if block_given?
yield @app_server.config
else
@app_server.config
end
end
end
def configure(&block)
Configuration.new(&block)
end
# --------------------
configuration = configure do |config|
config.tail_logs = true
config.max_connections = 55
config.admin_password = 'secret'
config.app_server do |app_server_config|
app_server_config.port = 8808
app_server_config.admin_password = config.admin_password
end
end
p configuration.class # => Configuration
p configuration.tail_logs # => true
p configuration.app_server.admin_password # => 'secret'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment