Module: StackServiceBase
- Defined in:
- lib/version.rb,
lib/stack-service-base.rb
Defined Under Namespace
Classes: Base
Class Method Summary collapse
Class Method Details
.rack_setup(app) ⇒ Object
7 8 9 10 11 12 13 14 15 16 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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/stack-service-base.rb', line 7 def rack_setup app # skip if called within Rspec task # TODO: warn if called not within Rspec task but with a wrong app class return unless app.respond_to? :use app.instance_eval do if OTEL_ENABLED otel_initialize end RackHelpers.rack_setup app if ENV.fetch('PROMETHEUS_METRICS_EXPORT', 'true') == 'true' require 'stack-service-base/prometheus' # use Rack::Deflater use Prometheus::Middleware::Collector use Prometheus::Middleware::Exporter end if defined? Sequel require 'stack-service-base/database' Sequel::Database.after_initialize { _1.loggers << LOGGER } attempts= 10 sleep_interval= 1 mod = Module.new do define_method(:connect) do |*args, **opts, &blk| tries = attempts begin super(*args, **opts, &blk) rescue Sequel::DatabaseConnectionError, Sequel::DatabaseError => e if (tries -= 1) > 0 LOGGER.warn "DB connect failed (#{e.message}), retrying in #{sleep_interval}s… (#{tries} left)" sleep sleep_interval retry end raise end end end Sequel.singleton_class.prepend(mod) # --- # require_relative 'stack-service-base/fiber_pool' end end end |