lib/open_api/dsl.rb in zero-rails_openapi-1.1.1 vs lib/open_api/dsl.rb in zero-rails_openapi-1.2.0

- old
+ new

@@ -27,27 +27,32 @@ def open_api method, summary = '', &block apis_set if @_ctrl_infos.nil? # select the routing info (corresponding to the current method) from the routing list. action_path = "#{@_ctrl_path ||= controller_path}##{method}" - routes_info = ctrl_routes_list.select { |api| api[:action_path].match? /^#{action_path}$/ }.first + routes_info = ctrl_routes_list&.select { |api| api[:action_path].match? /^#{action_path}$/ }&.first puts "[zero-rails_openapi] Routing mapping failed: #{@_ctrl_path}##{method}" or return if routes_info.nil? # structural { path: { http_method:{ } } }, for Paths Object. path = (@_api_infos ||= { })[routes_info[:path]] ||= { } current_api = path[routes_info[:http_verb]] = - ApiInfoObj.new(action_path).merge! summary: summary, operationId: method, tags: [@_apis_tag] + ApiInfoObj.new(action_path) + .merge! description: '', summary: summary, operationId: method, tags: [@_apis_tag], + parameters: [ ], requestBody: '', responses: { }, + security: [ ], servers: [ ] current_api.tap do |it| - it.instance_eval &block if block_given? [method, :all].each do |key| # blocks_store_key @_apis_blocks&.[](key)&.each { |blk| it.instance_eval &blk } end + it.instance_eval &block if block_given? + it.instance_eval { process_params } + it.delete_if { |_, v| v.blank? } end end # For DRY; method could be symbol array - def open_api_set method = :all, desc = '', &block + def api_dry method = :all, desc = '', &block @_apis_blocks ||= { } if method.is_a? Array method.each { |m| (@_apis_blocks[m.to_sym] ||= [ ]) << block } else (@_apis_blocks[method.to_sym] ||= [ ]) << block