Class: Sanford::Process
- Inherits:
-
Object
- Object
- Sanford::Process
- Defined in:
- lib/sanford/process.rb
Instance Attribute Summary collapse
-
#client_fds ⇒ Object
readonly
Returns the value of attribute client_fds.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#pid_file ⇒ Object
readonly
Returns the value of attribute pid_file.
-
#restart_cmd ⇒ Object
readonly
Returns the value of attribute restart_cmd.
-
#server ⇒ Object
readonly
Returns the value of attribute server.
-
#server_fd ⇒ Object
readonly
Returns the value of attribute server_fd.
-
#server_ip ⇒ Object
readonly
Returns the value of attribute server_ip.
-
#server_port ⇒ Object
readonly
Returns the value of attribute server_port.
Instance Method Summary collapse
- #daemonize? ⇒ Boolean
-
#initialize(server, options = nil) ⇒ Process
constructor
A new instance of Process.
- #run ⇒ Object
Constructor Details
#initialize(server, options = nil) ⇒ Process
Returns a new instance of Process.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/sanford/process.rb', line 10 def initialize(server, = nil) ||= {} @server = server @logger = @server.logger @pid_file = PIDFile.new(@server.pid_file) @restart_cmd = RestartCmd.new @server_ip = default_if_blank(ENV['SANFORD_IP'], @server.configured_ip) @server_port = default_if_blank( ENV['SANFORD_PORT'], @server.configured_port ){ |v| v.to_i } @server_fd = ignore_if_blank(ENV['SANFORD_SERVER_FD']){ |v| v.to_i } @listen_args = @server_fd ? [ @server_fd ] : [ @server_ip, @server_port ] @name = "sanford-#{@server.name}-#{@server_ip}-#{@server_port}" @client_fds = (ENV['SANFORD_CLIENT_FDS'] || "").split(',').map(&:to_i) @daemonize = !![:daemonize] @skip_daemonize = !!ignore_if_blank(ENV['SANFORD_SKIP_DAEMONIZE']) end |
Instance Attribute Details
#client_fds ⇒ Object (readonly)
Returns the value of attribute client_fds.
8 9 10 |
# File 'lib/sanford/process.rb', line 8 def client_fds @client_fds end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
7 8 9 |
# File 'lib/sanford/process.rb', line 7 def name @name end |
#pid_file ⇒ Object (readonly)
Returns the value of attribute pid_file.
7 8 9 |
# File 'lib/sanford/process.rb', line 7 def pid_file @pid_file end |
#restart_cmd ⇒ Object (readonly)
Returns the value of attribute restart_cmd.
7 8 9 |
# File 'lib/sanford/process.rb', line 7 def restart_cmd @restart_cmd end |
#server ⇒ Object (readonly)
Returns the value of attribute server.
7 8 9 |
# File 'lib/sanford/process.rb', line 7 def server @server end |
#server_fd ⇒ Object (readonly)
Returns the value of attribute server_fd.
8 9 10 |
# File 'lib/sanford/process.rb', line 8 def server_fd @server_fd end |
#server_ip ⇒ Object (readonly)
Returns the value of attribute server_ip.
8 9 10 |
# File 'lib/sanford/process.rb', line 8 def server_ip @server_ip end |
#server_port ⇒ Object (readonly)
Returns the value of attribute server_port.
8 9 10 |
# File 'lib/sanford/process.rb', line 8 def server_port @server_port end |
Instance Method Details
#daemonize? ⇒ Boolean
59 60 61 |
# File 'lib/sanford/process.rb', line 59 def daemonize? @daemonize && !@skip_daemonize end |
#run ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/sanford/process.rb', line 33 def run ::Process.daemon(true) if self.daemonize? log "Starting Sanford server for #{@server.name}..." @server.listen(*@listen_args) log "Listening on #{@server.ip}:#{@server.port}" $0 = @name @pid_file.write log "PID: #{@pid_file.pid}" ::Signal.trap("TERM"){ @server.stop } ::Signal.trap("INT"){ @server.halt } ::Signal.trap("USR2"){ @server.pause } thread = @server.start(@client_fds) log "#{@server.name} server started and ready." thread.join run_restart_cmd if @server.paused? rescue StandardError => exception log "Error: #{exception.}" log "#{@server.name} server never started." ensure @pid_file.remove end |