From 9650075edd2b7a24e7be9d919e35a99ceadfb65b Mon Sep 17 00:00:00 2001 From: naoki <35869330+ny1020@users.noreply.github.com> Date: Wed, 24 Apr 2024 11:21:36 +0900 Subject: [PATCH] Refactor global DEBUG_ENABLED to module-based configuration (#220) --- lib/rspec/openapi.rb | 52 ++++++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/lib/rspec/openapi.rb b/lib/rspec/openapi.rb index a96ddf7..dd91461 100644 --- a/lib/rspec/openapi.rb +++ b/lib/rspec/openapi.rb @@ -15,30 +15,17 @@ require 'rspec/openapi/extractors' require 'rspec/openapi/extractors/rack' -if ENV['OPENAPI'] - DEBUG_ENABLED = ['', '1', 'true'].include?(ENV['DEBUG']&.downcase) - - begin - require 'hanami' - rescue LoadError - warn 'Hanami not detected' if DEBUG_ENABLED - else - require 'rspec/openapi/extractors/hanami' - end +module RSpec::OpenAPI + class Config + class << self + attr_accessor :debug_enabled - begin - require 'rails' - rescue LoadError - warn 'Rails not detected' if DEBUG_ENABLED - else - require 'rspec/openapi/extractors/rails' + def load_environment_settings + @debug_enabled = ['', '1', 'true'].include?(ENV['DEBUG']&.downcase) + end + end end -end -require 'rspec/openapi/minitest_hooks' if Object.const_defined?('Minitest') -require 'rspec/openapi/rspec_hooks' if ENV['OPENAPI'] && Object.const_defined?('RSpec') - -module RSpec::OpenAPI @path = 'doc/openapi.yaml' @title = File.basename(Dir.pwd) @comment = nil @@ -84,3 +71,26 @@ class << self attr_reader :config_filename end end + +if ENV['OPENAPI'] + RSpec::OpenAPI::Config.load_environment_settings + + begin + require 'hanami' + rescue LoadError + warn 'Hanami not detected' if RSpec::OpenAPI::Config.debug_enabled + else + require 'rspec/openapi/extractors/hanami' + end + + begin + require 'rails' + rescue LoadError + warn 'Rails not detected' if RSpec::OpenAPI::Config.debug_enabled + else + require 'rspec/openapi/extractors/rails' + end +end + +require 'rspec/openapi/minitest_hooks' if Object.const_defined?('Minitest') +require 'rspec/openapi/rspec_hooks' if ENV['OPENAPI'] && Object.const_defined?('RSpec')