class SwaggerApi::Components

Attributes

controllers[RW]

Public Instance Methods

create() click to toggle source
# File lib/swagger_api/components.rb, line 10
def create
  return @components unless @components.nil?
  @components = {}
  controllers.each do |controller|
    if controller.custom_model_file.nil?
      @components.merge!(create_model_components_from_controller(controller))
    else
      @components.merge!(custom_json(controller.custom_model_file))
    end
  end
  @components
end
create_model_components_from_controller(controller) click to toggle source
# File lib/swagger_api/components.rb, line 28
def create_model_components_from_controller(controller)
  if sti?(controller.model)
    sti_models(controller.model.constantize)
  else
    {
      controller.model => ComponentSchema.new(controller: controller).create
    }
  end
end
custom_json(custom_model_file) click to toggle source
# File lib/swagger_api/components.rb, line 23
def custom_json(custom_model_file)
  file = File.read(custom_model_file)
  JSON.parse(file)
end
sti_models(model_klass) click to toggle source
# File lib/swagger_api/components.rb, line 38
def sti_models(model_klass)
  model_klass.descendants.map do |klass|
    [klass.name, ComponentSchema.new(controller: OpenStruct.new(model: klass.name)).create]
  end.to_h
end