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:
committed by
Soam Vasani
parent
fe4015fab2
commit
51c84f3cfc
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user