Class: Puma::Single
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Class Chain:
self,
Runner
|
|
Instance Chain:
self,
Runner
|
|
Inherits: |
Puma::Runner
|
Defined in: | lib/puma/single.rb |
Overview
This class is instantiated by the Launcher
and used to boot and serve a Ruby application when no puma “workers” are needed i.e. only using “threaded” mode. For example $ puma -t 1:5
At the core of this class is running an instance of Server
which gets created via the start_server
method from the Runner
class that this inherits from.
Class Method Summary
Instance Attribute Summary
- #jruby_daemon? ⇒ Boolean readonly
Runner
- Inherited
Instance Method Summary
Runner
- Inherited
Constructor Details
This class inherits a constructor from Puma::Runner
Instance Attribute Details
#jruby_daemon? ⇒ Boolean
(readonly)
[ GitHub ]
Instance Method Details
#halt
[ GitHub ]# File 'lib/puma/single.rb', line 32
def halt @server.halt end
#jruby_daemon_start
[ GitHub ]# File 'lib/puma/single.rb', line 46
def jruby_daemon_start require 'puma/jruby_restart' JRubyRestart.daemon_start(@restart_dir, @launcher.restart_args) end
#restart
[ GitHub ]# File 'lib/puma/single.rb', line 24
def restart @server.begin_restart end
#run
[ GitHub ]# File 'lib/puma/single.rb', line 51
def run already_daemon = false if jruby_daemon? require 'puma/jruby_restart' if JRubyRestart.daemon? # load and bind before redirecting IO so errors show up on stdout/stderr load_and_bind redirect_io end already_daemon = JRubyRestart.daemon_init end output_header "single" if jruby_daemon? if already_daemon JRubyRestart.perm_daemonize else pid = nil Signal.trap "SIGUSR2" do log "* Started new process #{pid} as daemon..." # Must use exit! so we don't unwind and run the ensures # that will be run by the new child (such as deleting the # pidfile) exit!(true) end Signal.trap "SIGCHLD" do log "! Error starting new process as daemon, exiting" exit 1 end jruby_daemon_start sleep end else if daemon? log "* Daemonizing..." Process.daemon(true) redirect_io end load_and_bind end Plugins.fire_background @launcher.write_state start_control @server = server = start_server unless daemon? log "Use Ctrl-C to stop" redirect_io end @launcher.events.fire_on_booted! begin server.run.join rescue Interrupt # Swallow it end end
#stats
[ GitHub ]# File 'lib/puma/single.rb', line 16
def stats b = @server.backlog || 0 r = @server.running || 0 t = @server.pool_capacity || 0 m = @server.max_threads || 0 %Q!{ "started_at": "#{@started_at.utc.iso8601}", "backlog": #{b}, "running": #{r}, "pool_capacity": #{t}, "max_threads": #{m} }! end
#stop
[ GitHub ]# File 'lib/puma/single.rb', line 28
def stop @server.stop(false) if @server end