Class: Puma::Configuration

Inherits:
Object
  • Object
show all
Includes:
ConfigDefault
Defined in:
lib/puma/configuration.rb

Defined Under Namespace

Classes: ConfigMiddleware

Constant Summary

Constants included from ConfigDefault

Puma::ConfigDefault::DefaultRackup, Puma::ConfigDefault::DefaultTCPHost, Puma::ConfigDefault::DefaultTCPPort, Puma::ConfigDefault::DefaultWorkerShutdownTimeout, Puma::ConfigDefault::DefaultWorkerTimeout

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}, &blk) ⇒ Configuration

Returns a new instance of Configuration.



135
136
137
138
139
140
141
142
143
# File 'lib/puma/configuration.rb', line 135

def initialize(options={}, &blk)
  @options = LeveledOptions.new(default_options, options)

  @plugins = PluginLoader.new

  if blk
    configure(&blk)
  end
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



145
146
147
# File 'lib/puma/configuration.rb', line 145

def options
  @options
end

#pluginsObject (readonly)

Returns the value of attribute plugins.



145
146
147
# File 'lib/puma/configuration.rb', line 145

def plugins
  @plugins
end

Class Method Details

.from_file(path) ⇒ Object



127
128
129
130
131
132
133
# File 'lib/puma/configuration.rb', line 127

def self.from_file(path)
  cfg = new

  DSL.new(cfg.options, cfg)._load_from path

  return cfg
end

.temp_pathObject



272
273
274
275
276
277
# File 'lib/puma/configuration.rb', line 272

def self.temp_path
  require 'tmpdir'

  t = (Time.now.to_f * 1000).to_i
  "#{Dir.tmpdir}/puma-status-#{t}-#{$$}"
end

Instance Method Details

#appObject

Load the specified rackup file, pull options from the rackup file, and set @app.



241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
# File 'lib/puma/configuration.rb', line 241

def app
  found = options[:app] || load_rackup

  if @options[:mode] == :tcp
    require 'puma/tcp_logger'

    logger = @options[:logger]
    return TCPLogger.new(logger, found, @options[:log_requests])
  end

  if @options[:log_requests]
    logger = @options[:logger]
    found = CommonLogger.new(found, logger)
  end

  ConfigMiddleware.new(self, found)
end

#app_configured?Boolean

Indicate if there is a properly configured app

Returns:

  • (Boolean)


230
231
232
# File 'lib/puma/configuration.rb', line 230

def app_configured?
  @options[:app] || File.exist?(rackup)
end

#clampObject

Call once all configuration (included from rackup files) is loaded to flesh out any defaults



210
211
212
213
# File 'lib/puma/configuration.rb', line 210

def clamp
  @options.shift
  @options.force_defaults
end

#configure(&blk) ⇒ Object



147
148
149
150
# File 'lib/puma/configuration.rb', line 147

def configure(&blk)
  @options.shift
  DSL.new(@options, self)._run(&blk)
end

#default_optionsObject



167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# File 'lib/puma/configuration.rb', line 167

def default_options
  {
    :min_threads => 0,
    :max_threads => 16,
    :log_requests => false,
    :debug => false,
    :binds => ["tcp://#{DefaultTCPHost}:#{DefaultTCPPort}"],
    :workers => 0,
    :daemon => false,
    :mode => :http,
    :worker_timeout => DefaultWorkerTimeout,
    :worker_boot_timeout => DefaultWorkerTimeout,
    :worker_shutdown_timeout => DefaultWorkerShutdownTimeout,
    :remote_address => :socket,
    :tag => method(:infer_tag),
    :environment => lambda { ENV['RACK_ENV'] || "development" },
    :rackup => DefaultRackup,
    :logger => STDOUT
  }
end

#environmentObject

Return which environment we’re running in



260
261
262
# File 'lib/puma/configuration.rb', line 260

def environment
  @options[:environment]
end

#flattenObject



158
159
160
# File 'lib/puma/configuration.rb', line 158

def flatten
  dup.flatten!
end

#flatten!Object



162
163
164
165
# File 'lib/puma/configuration.rb', line 162

def flatten!
  @options = @options.flatten
  self
end

#initialize_copy(other) ⇒ Object



152
153
154
155
156
# File 'lib/puma/configuration.rb', line 152

def initialize_copy(other)
  @conf = nil
  @cli_options = nil
  @options = @options.dup
end

#loadObject



188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
# File 'lib/puma/configuration.rb', line 188

def load
  files = @options.all_of(:config_files)

  if files.empty?
    imp = %W(config/puma/#{@options[:environment]}.rb config/puma.rb).find { |f|
      File.exist?(f)
    }

    files << imp
  elsif files == ["-"]
    files = []
  end

  files.each do |f|
    @options.shift

    DSL.load @options, self, f
  end
end

#load_plugin(name) ⇒ Object



264
265
266
# File 'lib/puma/configuration.rb', line 264

def load_plugin(name)
  @plugins.create name
end

#rackupObject



234
235
236
# File 'lib/puma/configuration.rb', line 234

def rackup
  @options[:rackup]
end

#run_hooks(key, arg) ⇒ Object



268
269
270
# File 'lib/puma/configuration.rb', line 268

def run_hooks(key, arg)
  @options.all_of(key).each { |b| b.call arg }
end