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
88 89 90 |
# File 'lib/jets/ruby_server.rb', line 88 def self.run new.run end |
Instance Method Details
#prewarm_request(event) ⇒ Object
69 70 71 72 73 |
# File 'lib/jets/ruby_server.rb', line 69 def prewarm_request(event) # JSON.dump("prewarmed_at" => Time.now.to_s) Jets.increase_prewarm_count %Q|{"prewarmed_at":"#{Time.now.to_s}"}| # raw json for speed end |
#run ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/jets/ruby_server.rb', line 17 def run $stdout.sync = true Jets.boot # 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
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/jets/ruby_server.rb', line 43 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'] input_completed = false loop do event, handler = nil, nil client = server.accept # Wait for a client to connect 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) client.puts(result) client.close input_completed = false end end |
#standard_request(event, context, handler) ⇒ Object
75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/jets/ruby_server.rb', line 75 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 |