Class: Reifier::Server
- Inherits:
-
Object
- Object
- Reifier::Server
- Defined in:
- lib/reifier/server.rb
Instance Method Summary collapse
-
#initialize(app, options = {}) ⇒ Server
constructor
A new instance of Server.
- #load_configuration ⇒ Object
- #start ⇒ Object
Constructor Details
#initialize(app, options = {}) ⇒ Server
3 4 5 6 |
# File 'lib/reifier/server.rb', line 3 def initialize(app, = {}) @app = app = end |
Instance Method Details
#load_configuration ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/reifier/server.rb', line 8 def load_configuration if defined?(Rails) path = Rails.root.join('config/reifier.rb') else path = Dir.pwd + '/reifier.rb' end return unless File.exist?(path) lines = File.read(path).split("\n") lines.each do |line| eval(line) end puts "======= Loaded settings from #{path} =======\n" rescue NoMethodError => e raise UnsupportedOptionError, "Option #{e.name} is not supported from config file" end |
#start ⇒ Object
28 29 30 31 32 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 58 59 60 61 62 |
# File 'lib/reifier/server.rb', line 28 def start server = TCPServer.new([:Host], [:Port]) child_pids = [] [:Workers].to_i.times do child_pids << spawn_worker(server) end Signal.trap 'SIGINT' do puts "\n======= Cleaning up #{child_pids.length} Workers =======\n" child_pids.each do |cpid| begin Process.kill(:INT, cpid) rescue Errno::ESRCH end end exit end puts "# Ruby version: #{RUBY_VERSION}" puts "# Min threads: #{@options[:MinThreads]}, max threads: #{@options[:MaxThreads]}" puts "# Environment: #{@options[:environment]}" puts "# Number of Workers used: #{@options[:Workers]}" puts "# Master PID: #{Process.pid}" puts "# Listening on tcp://#{server.addr.last}:#{@options[:Port]}" loop do pid = Process.wait STDERR.puts "Process #{pid} crashed" child_pids.delete(pid) child_pids << spawn_worker end end |