From 4a2820f08137e614683dadf49b563fe759dbd3e5 Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Tue, 2 May 2023 17:38:54 +0400 Subject: [PATCH] Add class Diversipub::RackApp --- diversipub.gemspec | 1 + lib/diversipub.rb | 2 ++ lib/diversipub/rack_app.rb | 28 ++++++++++++++++++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 lib/diversipub/rack_app.rb diff --git a/diversipub.gemspec b/diversipub.gemspec index cb514b6..a931e8e 100644 --- a/diversipub.gemspec +++ b/diversipub.gemspec @@ -41,6 +41,7 @@ Gem::Specification.new do |spec| spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename f } + spec.add_runtime_dependency 'rack', '~> 2.2', '>= 2.2.7' spec.add_runtime_dependency 'sinatra', '~> 3.0', '>= 3.0.6' spec.add_development_dependency 'pry', '~> 0.14' diff --git a/lib/diversipub.rb b/lib/diversipub.rb index 8fdce2b..88a443a 100644 --- a/lib/diversipub.rb +++ b/lib/diversipub.rb @@ -1,7 +1,9 @@ # frozen_string_literal: true +require 'rack' require 'sinatra/base' require_relative 'diversipub/main' +require_relative 'diversipub/rack_app' require_relative 'diversipub/sinatra_app' require_relative 'diversipub/version' diff --git a/lib/diversipub/rack_app.rb b/lib/diversipub/rack_app.rb new file mode 100644 index 0000000..6329edc --- /dev/null +++ b/lib/diversipub/rack_app.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +module Diversipub + ## + # Rack web application. + # + class RackApp + def initialize(sinatra_app) + @sinatra_app = sinatra_app + end + + def call(env) + to_app.call env + end + + def to_app + @to_app ||= builder.to_app + end + + private + + def builder + @builder ||= Rack::Builder.new.tap do |builder| + builder.run @sinatra_app + end + end + end +end