class Upfluence::HTTP::Server
Constants
- DEFAULT_OPTIONS
Public Class Methods
new(options = {}, &block)
click to toggle source
# File lib/upfluence/http/server.rb, line 36 def initialize(options = {}, &block) @options = DEFAULT_OPTIONS.dup.merge(options) opts = @options base_handler = nil if opts[:base_handler_klass] base_handler = opts[:base_handler_klass].new(@options[:interfaces]) end @builder = Builder.new do use Middleware::Logger use Middleware::Prometheus use Middleware::ApplicationHeaders, base_handler use Middleware::HandleException use Upfluence.error_logger.middleware use Rack::ContentLength use Rack::Chunked use Rack::Lint if Upfluence.env.development? use Rack::TempfileReaper use Rack::ETag use Middleware::CORS if Upfluence.env.development? map '/healthcheck' do run(opts[:healthcheck_endpoint] || Endpoint::Healthcheck.new) end if opts[:base_processor_klass] && base_handler map '/base' do run_thrift(opts[:base_processor_klass], base_handler) end end map('/debug') { run(Endpoint::Profiler.new) } if opts[:debug] instance_eval(&block) end @handler = Rack::Handler.get(@options[:server]) end
Public Instance Methods
serve()
click to toggle source
# File lib/upfluence/http/server.rb, line 76 def serve ENV['RACK_ENV'] = Upfluence.env.to_s Thread.new { run_prometheus_exporter } if @options[:push_gateway_url] @handler.run(@builder, @options) do |server| server.threaded = @options[:threaded] if server.respond_to? :threaded= if server.respond_to?(:threadpool_size=) && @options[:threadpool_size] server.threadpool_size = @options[:threadpool_size] end end end
Private Instance Methods
run_prometheus_exporter()
click to toggle source
# File lib/upfluence/http/server.rb, line 92 def run_prometheus_exporter push = Prometheus::Client::Push.new( @options[:app_name], @options[:unit_name], @options[:push_gateway_url] ) loop do sleep @options[:push_gateway_interval] begin push.replace Prometheus::Client.registry rescue => e Upfluence.error_logger.notify(e) end end end