forked from loafle/openapi-generator-original
* [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>
149 lines
3.3 KiB
YAML
149 lines
3.3 KiB
YAML
# This file is based on https://github.com/rails/rails/blob/master/.rubocop.yml (MIT license)
|
|
# Automatically generated by OpenAPI Generator (https://openapi-generator.tech)
|
|
AllCops:
|
|
TargetRubyVersion: 2.4
|
|
# RuboCop has a bunch of cops enabled by default. This setting tells RuboCop
|
|
# to ignore them, so only the ones explicitly set in this file are enabled.
|
|
DisabledByDefault: true
|
|
Exclude:
|
|
- '**/templates/**/*'
|
|
- '**/vendor/**/*'
|
|
- 'actionpack/lib/action_dispatch/journey/parser.rb'
|
|
|
|
# Prefer &&/|| over and/or.
|
|
Style/AndOr:
|
|
Enabled: true
|
|
|
|
# Align `when` with `case`.
|
|
Layout/CaseIndentation:
|
|
Enabled: true
|
|
|
|
# Align comments with method definitions.
|
|
Layout/CommentIndentation:
|
|
Enabled: true
|
|
|
|
Layout/ElseAlignment:
|
|
Enabled: true
|
|
|
|
Layout/EmptyLineAfterMagicComment:
|
|
Enabled: true
|
|
|
|
# In a regular class definition, no empty lines around the body.
|
|
Layout/EmptyLinesAroundClassBody:
|
|
Enabled: true
|
|
|
|
# In a regular method definition, no empty lines around the body.
|
|
Layout/EmptyLinesAroundMethodBody:
|
|
Enabled: true
|
|
|
|
# In a regular module definition, no empty lines around the body.
|
|
Layout/EmptyLinesAroundModuleBody:
|
|
Enabled: true
|
|
|
|
Layout/FirstArgumentIndentation:
|
|
Enabled: true
|
|
|
|
# Use Ruby >= 1.9 syntax for hashes. Prefer { a: :b } over { :a => :b }.
|
|
Style/HashSyntax:
|
|
Enabled: false
|
|
|
|
# Method definitions after `private` or `protected` isolated calls need one
|
|
# extra level of indentation.
|
|
Layout/IndentationConsistency:
|
|
Enabled: true
|
|
EnforcedStyle: indented_internal_methods
|
|
|
|
# Two spaces, no tabs (for indentation).
|
|
Layout/IndentationWidth:
|
|
Enabled: true
|
|
|
|
Layout/LeadingCommentSpace:
|
|
Enabled: true
|
|
|
|
Layout/SpaceAfterColon:
|
|
Enabled: true
|
|
|
|
Layout/SpaceAfterComma:
|
|
Enabled: true
|
|
|
|
Layout/SpaceAroundEqualsInParameterDefault:
|
|
Enabled: true
|
|
|
|
Layout/SpaceAroundKeyword:
|
|
Enabled: true
|
|
|
|
Layout/SpaceAroundOperators:
|
|
Enabled: true
|
|
|
|
Layout/SpaceBeforeComma:
|
|
Enabled: true
|
|
|
|
Layout/SpaceBeforeFirstArg:
|
|
Enabled: true
|
|
|
|
Style/DefWithParentheses:
|
|
Enabled: true
|
|
|
|
# Defining a method with parameters needs parentheses.
|
|
Style/MethodDefParentheses:
|
|
Enabled: true
|
|
|
|
Style/FrozenStringLiteralComment:
|
|
Enabled: false
|
|
EnforcedStyle: always
|
|
|
|
# Use `foo {}` not `foo{}`.
|
|
Layout/SpaceBeforeBlockBraces:
|
|
Enabled: true
|
|
|
|
# Use `foo { bar }` not `foo {bar}`.
|
|
Layout/SpaceInsideBlockBraces:
|
|
Enabled: true
|
|
|
|
# Use `{ a: 1 }` not `{a:1}`.
|
|
Layout/SpaceInsideHashLiteralBraces:
|
|
Enabled: true
|
|
|
|
Layout/SpaceInsideParens:
|
|
Enabled: true
|
|
|
|
# Check quotes usage according to lint rule below.
|
|
#Style/StringLiterals:
|
|
# Enabled: true
|
|
# EnforcedStyle: single_quotes
|
|
|
|
# Detect hard tabs, no hard tabs.
|
|
Layout/IndentationStyle:
|
|
Enabled: true
|
|
|
|
# Blank lines should not have any spaces.
|
|
Layout/TrailingEmptyLines:
|
|
Enabled: true
|
|
|
|
# No trailing whitespace.
|
|
Layout/TrailingWhitespace:
|
|
Enabled: false
|
|
|
|
# Use quotes for string literals when they are enough.
|
|
Style/RedundantPercentQ:
|
|
Enabled: true
|
|
|
|
# Align `end` with the matching keyword or starting expression except for
|
|
# assignments, where it should be aligned with the LHS.
|
|
Layout/EndAlignment:
|
|
Enabled: true
|
|
EnforcedStyleAlignWith: variable
|
|
AutoCorrect: true
|
|
|
|
# Use my_method(my_arg) not my_method( my_arg ) or my_method my_arg.
|
|
Lint/RequireParentheses:
|
|
Enabled: true
|
|
|
|
Style/RedundantReturn:
|
|
Enabled: true
|
|
AllowMultipleReturnValues: true
|
|
|
|
Style/Semicolon:
|
|
Enabled: true
|
|
AllowAsExpressionSeparator: true
|