William Cheng c5a0374d2b
[Ruby] add useAutoload option to use autoload instead of require (#13153)
* [Ruby] Use Ruby autoload to lower memory usage and load times

Fixes #12648

Requiring all models up front can be very expensive in both time and
memory if there are many models. In an example client with 6000 models,
this would consume nearly 400MB of memory and take about 7 seconds to
load. This is mostly unnecessary as most users of the client library
will only actually use a small percentage of the library.

The changes in this commit use Ruby's autoload capability to defer the
loading until the constant is actually used. In that same example client
with 6000 models, when initially requiring the library, the memory
usage dropped to ~20MB and loaded in 0.3 seconds. As the constants are
loaded on-demand, the memory would increase towards that 400MB ceiling,
but if only a few constants are actually used, then memory will never
actually hit that ceiling.

An additional side effect of using Ruby's autoload is that the order of
declaring the constants is not important, as Ruby will naturally load
them in the correct order when they are needed. Thus, this commit obviates
PR #9103 and fixes #4690.

* add option to use autoload in ruby client

* test ruby clients only

* add tests

* update samples

* Revert "test ruby clients only"

This reverts commit 0aaf71cd4cc5d266f824b261a4d312f07bd589e5.

* update doc

Co-authored-by: Jason Frey <fryguy9@gmail.com>
2022-08-11 12:45:13 +08:00

10 KiB

petstore

Petstore - the Ruby gem for the OpenAPI Petstore

This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: " \

This SDK is automatically generated by the OpenAPI Generator project:

  • API version: 1.0.0
  • Package version: 1.0.0
  • Build package: org.openapitools.codegen.languages.RubyClientCodegen

Installation

Build a gem

To build the Ruby code into a gem:

gem build petstore.gemspec

Then either install the gem locally:

gem install ./petstore-1.0.0.gem

(for development, run gem install --dev ./petstore-1.0.0.gem to install the development dependencies)

or publish the gem to a gem hosting service, e.g. RubyGems.

Finally add this to the Gemfile:

gem 'petstore', '~> 1.0.0'

Install from Git

If the Ruby gem is hosted at a git repository: https://github.com/GIT_USER_ID/GIT_REPO_ID, then add the following in the Gemfile:

gem 'petstore', :git => 'https://github.com/GIT_USER_ID/GIT_REPO_ID.git'

Include the Ruby code directly

Include the Ruby code directly using -I as follows:

ruby -Ilib script.rb

Getting Started

Please follow the installation procedure and then run the following code:

# Load the gem
require 'petstore'

api_instance = Petstore::AnotherFakeApi.new
client = Petstore::Client.new # Client | client model

begin
  #To test special tags
  result = api_instance.call_123_test_special_tags(client)
  p result
rescue Petstore::ApiError => e
  puts "Exception when calling AnotherFakeApi->call_123_test_special_tags: #{e}"
end

Documentation for API Endpoints

All URIs are relative to http://petstore.swagger.io:80/v2

Class Method HTTP request Description
Petstore::AnotherFakeApi call_123_test_special_tags PATCH /another-fake/dummy To test special tags
Petstore::DefaultApi foo_get GET /foo
Petstore::FakeApi fake_health_get GET /fake/health Health check endpoint
Petstore::FakeApi fake_http_signature_test GET /fake/http-signature-test test http signature authentication
Petstore::FakeApi fake_outer_boolean_serialize POST /fake/outer/boolean
Petstore::FakeApi fake_outer_composite_serialize POST /fake/outer/composite
Petstore::FakeApi fake_outer_number_serialize POST /fake/outer/number
Petstore::FakeApi fake_outer_string_serialize POST /fake/outer/string
Petstore::FakeApi fake_property_enum_integer_serialize POST /fake/property/enum-int
Petstore::FakeApi test_body_with_binary PUT /fake/body-with-binary
Petstore::FakeApi test_body_with_file_schema PUT /fake/body-with-file-schema
Petstore::FakeApi test_body_with_query_params PUT /fake/body-with-query-params
Petstore::FakeApi test_client_model PATCH /fake To test "client" model
Petstore::FakeApi test_endpoint_parameters POST /fake Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
Petstore::FakeApi test_enum_parameters GET /fake To test enum parameters
Petstore::FakeApi test_group_parameters DELETE /fake Fake endpoint to test group parameters (optional)
Petstore::FakeApi test_inline_additional_properties POST /fake/inline-additionalProperties test inline additionalProperties
Petstore::FakeApi test_json_form_data GET /fake/jsonFormData test json serialization of form data
Petstore::FakeApi test_query_parameter_collection_format PUT /fake/test-query-parameters
Petstore::FakeClassnameTags123Api test_classname PATCH /fake_classname_test To test class name in snake case
Petstore::PetApi add_pet POST /pet Add a new pet to the store
Petstore::PetApi delete_pet DELETE /pet/{petId} Deletes a pet
Petstore::PetApi find_pets_by_status GET /pet/findByStatus Finds Pets by status
Petstore::PetApi find_pets_by_tags GET /pet/findByTags Finds Pets by tags
Petstore::PetApi get_pet_by_id GET /pet/{petId} Find pet by ID
Petstore::PetApi update_pet PUT /pet Update an existing pet
Petstore::PetApi update_pet_with_form POST /pet/{petId} Updates a pet in the store with form data
Petstore::PetApi upload_file POST /pet/{petId}/uploadImage uploads an image
Petstore::PetApi upload_file_with_required_file POST /fake/{petId}/uploadImageWithRequiredFile uploads an image (required)
Petstore::StoreApi delete_order DELETE /store/order/{order_id} Delete purchase order by ID
Petstore::StoreApi get_inventory GET /store/inventory Returns pet inventories by status
Petstore::StoreApi get_order_by_id GET /store/order/{order_id} Find purchase order by ID
Petstore::StoreApi place_order POST /store/order Place an order for a pet
Petstore::UserApi create_user POST /user Create user
Petstore::UserApi create_users_with_array_input POST /user/createWithArray Creates list of users with given input array
Petstore::UserApi create_users_with_list_input POST /user/createWithList Creates list of users with given input array
Petstore::UserApi delete_user DELETE /user/{username} Delete user
Petstore::UserApi get_user_by_name GET /user/{username} Get user by user name
Petstore::UserApi login_user GET /user/login Logs user into the system
Petstore::UserApi logout_user GET /user/logout Logs out current logged in user session
Petstore::UserApi update_user PUT /user/{username} Updated user

Documentation for Models

Documentation for Authorization

api_key

  • Type: API key
  • API key parameter name: api_key
  • Location: HTTP header

api_key_query

  • Type: API key
  • API key parameter name: api_key_query
  • Location: URL query string

bearer_test

  • Type: Bearer authentication (JWT)

http_basic_test

  • Type: HTTP basic authentication

http_signature_test

petstore_auth