Class: Jets::RubyServer
- Inherits:
-
Object
- Object
- Jets::RubyServer
- Defined in:
- lib/jets/ruby_server.rb
Constant Summary collapse
- PORT =
8080
Class Method Summary collapse
Instance Method Summary collapse
- #prewarm_request(event) ⇒ Object
- #run ⇒ Object
- #serve ⇒ Object
- #standard_request(event, context, handler) ⇒ Object
Class Method Details
.run ⇒ Object
96 97 98 |
# File 'lib/jets/ruby_server.rb', line 96 def self.run new.run end |
Instance Method Details
#prewarm_request(event) ⇒ Object
76 77 78 79 80 81 |
# File 'lib/jets/ruby_server.rb', line 76 def prewarm_request(event) # JSON.dump("prewarmed_at" => Time.now.to_s) Jets.increase_prewarm_count Jets.logger.info("Prewarm request") %Q|{"prewarmed_at":"#{Time.now.to_s}"}| # raw json for speed end |
#run ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/jets/ruby_server.rb', line 23 def run Jets.boot(stringio: true) # outside of child process for COW Jets.eager_load! # INT - ^C trap('INT') do puts "Shutting down ruby_server.rb..." sleep 0.1 exit end if ENV['FOREGROUND'] # Usage above serve return end # Reaching here means we'll run the server in the background pid = Process.fork if pid.nil? serve else # parent process Process.detach(pid) end end |
#serve ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/jets/ruby_server.rb', line 48 def serve # child process server = TCPServer.new(8080) # Server bind to port 8080 puts "Ruby server started on port #{PORT}" if ENV['FOREGROUND'] || ENV['JETS_DEBUG'] || ENV['C9_USER'] loop do client = server.accept # Wait for a client to connect input_completed, event, handler = nil, nil, nil unless input_completed event = client.gets.strip # text # puts event # uncomment for debugging, Jets has changed stdout to stderr handler = client.gets.strip # text # puts handler # uncomment for debugging, Jets has changed stdout to stderr input_completed = true end result = event['_prewarm'] ? prewarm_request(event) : standard_request(event, '{}', handler) Jets::IO.flush # flush output and write to disk for node shim client.puts(result) client.close end end |
#standard_request(event, context, handler) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/jets/ruby_server.rb', line 83 def standard_request(event, context, handler) Jets::Processors::MainProcessor.new( event, context, handler).run rescue Exception => e JSON.dump( "stackTrace" => e.backtrace, "errorMessage" => e., "errorType" => "RubyError", ) end |