# ri > Puma::UserFileDefaultOptions

---
type: CommandReference
command: Puma::UserFileDefaultOptions
mode: perldoc
section: ""
source: rdoc
---

## Quick Reference

- `Puma::UserFileDefaultOptions.new(user_options, default_options)` — create leveled config
- `options[:key]` — get value with user > file > default precedence
- `options.all_of(:key)` — return array of [user, file, default] values
- `options.file_options[:key] = value` — set file-level option
- `options.finalize_values` — resolve proc-based defaults

## Name

A class used for storing "leveled" configuration options. User input takes precedence over file options, which take precedence over defaults.

## Synopsis

Constructor: `Puma::UserFileDefaultOptions.new(user_options = {}, default_options = {})`

## Options

**Instance methods:**

- `[]` — access an option value; returns user value if present, otherwise file, otherwise default.
- `[]=` — set an option (precedence not specified in documentation).
- `all_of` — returns an array of `[user, file, default]` values for the given key.
- `fetch` — fetch an option with a default (similar to `[]`).
- `final_options` — returns the final computed options hash.
- `finalize_values` — resolves any proc-based default options.
- `default_options` — returns the default options hash.
- `file_options` — returns the file options hash.
- `user_options` — returns the user options hash.

**Attributes (readers):**

- `default_options`
- `file_options`
- `user_options`

## Examples

ruby
# User input is preferred over defaults
user_options    = { foo: "bar" }
default_options = { foo: "zoo" }
options = Puma::UserFileDefaultOptions.new(user_options, default_options)
puts options[:foo]
# => "bar"
ruby
# All values can be accessed via all_of
puts options.all_of(:foo)
# => ["bar", "zoo"]
ruby
# File options override defaults but not user options
user_options    = { foo: "bar" }
default_options = { rackup: "zoo.rb" }
options = Puma::UserFileDefaultOptions.new(user_options, default_options)
options.file_options[:rackup] = "sup.rb"
puts options[:rackup]
# => "sup.rb"
## See Also

No cross-references provided.