Ruby logger (#251)

* Add logger for ruby environment

* Update readme and example for ruby logger

* ruby-env: log load time for user code
This commit is contained in:
S. Brent Faulkner
2017-07-07 18:05:11 -07:00
committed by Soam Vasani
parent fe4015fab2
commit 51c84f3cfc
6 changed files with 32 additions and 12 deletions
+5
View File
@@ -1,9 +1,14 @@
# frozen_string_literal: true
require_relative 'request'
require 'forwardable'
module Fission
class Context
extend Forwardable
def_instance_delegator :request, :logger
attr_reader :env
def initialize(env)
+6 -2
View File
@@ -5,14 +5,18 @@ require_relative 'context'
module Fission
module Handler
def self.call(env)
context = Context.new(env)
response = if method(:handler).arity > 0
handler(Context.new(env))
handler(context)
else
handler
end
response.is_a?(Array) ? response : Rack::Response.new([response]).finish
rescue
rescue => e
context.logger.error(%(Function failed - #{e}\n#{e.backtrace.join("\n")}))
Rack::Response.new(['500 Internal Server Error'], 500, {}).finish
end
end
+10 -2
View File
@@ -1,13 +1,21 @@
# frozen_string_literal: true
require 'benchmark'
module Fission
CODE_PATH = '/userfunc/user'
module Specializer
def self.call(env)
load CODE_PATH
request = Request.new(env)
request.logger.info("Codepath defaulting to #{CODE_PATH}")
time = Benchmark.measure { load CODE_PATH }
request.logger.info("User code loaded in #{(time.real * 1000).round(3)}ms")
Rack::Response.new([], 201).finish
rescue
rescue => e
request.logger.error(%(Specialization failed - #{e}\n#{e.backtrace.join("\n")}))
Rack::Response.new(['500 Internal Server Error'], 500, {}).finish
end
end