From 8b17ff8d686ee4fda2ffba1f079a4aca65c2602f Mon Sep 17 00:00:00 2001 From: Matthew Keeler Date: Mon, 14 Jul 2025 14:51:43 -0400 Subject: [PATCH 1/3] fix: Bump minimum ruby version to 3.1 --- .github/workflows/build-gem.yml | 6 +- .github/workflows/ci.yml | 18 +- .github/workflows/manual-publish-docs.yml | 2 +- .github/workflows/manual-publish.yml | 16 +- .github/workflows/release-please.yml | 18 +- .rubocop.yml | 396 +++++++++++----------- README.md | 2 +- launchdarkly-server-sdk.gemspec | 2 +- 8 files changed, 230 insertions(+), 230 deletions(-) diff --git a/.github/workflows/build-gem.yml b/.github/workflows/build-gem.yml index c9f3b0c1..7ad3eedc 100644 --- a/.github/workflows/build-gem.yml +++ b/.github/workflows/build-gem.yml @@ -4,11 +4,11 @@ on: workflow_call: inputs: version: - description: 'The version of ruby to build against' + description: "The version of ruby to build against" type: string - default: '3.0' + default: "3.2" upload-artifact: - description: 'Whether to upload the gem as an artifact' + description: "Whether to upload the gem as an artifact" type: boolean required: false default: true diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 173df1f3..a22014f5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,29 +1,29 @@ name: Run CI on: push: - branches: [ main, 'feat/**' ] + branches: [main, "feat/**"] paths-ignore: - - '**.md' # Do not need to run CI for markdown changes. + - "**.md" # Do not need to run CI for markdown changes. pull_request: - branches: [ main, 'feat/**' ] + branches: [main, "feat/**"] paths-ignore: - - '**.md' + - "**.md" jobs: build-linux-oldest: uses: ./.github/workflows/build-gem.yml with: - version: '3.0' + version: "3.2" build-linux-latest: uses: ./.github/workflows/build-gem.yml with: - version: '3.2' + version: "3.2" build-linux-jruby: uses: ./.github/workflows/build-gem.yml with: - version: 'jruby-9.4' + version: "jruby-9.4" build-docs: runs-on: ubuntu-latest @@ -33,7 +33,7 @@ jobs: - uses: ./.github/actions/setup with: - version: '3.0' + version: "3.2" - uses: ./.github/actions/build-docs @@ -52,7 +52,7 @@ jobs: - uses: ./.github/actions/setup with: - version: '3.0' + version: "3.2" - name: Run tests run: bundle exec rspec spec diff --git a/.github/workflows/manual-publish-docs.yml b/.github/workflows/manual-publish-docs.yml index be3859b7..f452d6f4 100644 --- a/.github/workflows/manual-publish-docs.yml +++ b/.github/workflows/manual-publish-docs.yml @@ -14,7 +14,7 @@ jobs: - uses: ./.github/actions/setup with: - version: '3.0' + version: "3.2" install-dependencies: false - uses: ./.github/actions/build-docs diff --git a/.github/workflows/manual-publish.yml b/.github/workflows/manual-publish.yml index bbb1ba67..5e35e6dd 100644 --- a/.github/workflows/manual-publish.yml +++ b/.github/workflows/manual-publish.yml @@ -3,7 +3,7 @@ on: workflow_dispatch: inputs: dry_run: - description: 'Is this a dry run. If so no package will be published.' + description: "Is this a dry run. If so no package will be published." type: boolean required: true @@ -11,16 +11,16 @@ jobs: build-ruby-gem: uses: ./.github/workflows/build-gem.yml with: - version: '3.0' + version: "3.2" build-jruby-gem: uses: ./.github/workflows/build-gem.yml with: - version: 'jruby-9.4' + version: "jruby-9.4" publish: runs-on: ubuntu-latest - needs: [ 'build-ruby-gem', 'build-jruby-gem' ] + needs: ["build-ruby-gem", "build-jruby-gem"] outputs: gem-hash: ${{ steps.publish.outputs.gem-hash }} @@ -34,15 +34,15 @@ jobs: - uses: ./.github/actions/setup with: - version: '3.0' + version: "3.2" install-dependencies: false - uses: launchdarkly/gh-actions/actions/release-secrets@release-secrets-v1.2.0 - name: 'Get rubygems API key' + name: "Get rubygems API key" if: ${{ !inputs.dry_run }} with: aws_assume_role: ${{ vars.AWS_ROLE_ARN }} - ssm_parameter_pairs: '/production/common/releasing/rubygems/api_key = GEM_HOST_API_KEY' + ssm_parameter_pairs: "/production/common/releasing/rubygems/api_key = GEM_HOST_API_KEY" - uses: ./.github/actions/build-docs @@ -57,7 +57,7 @@ jobs: token: ${{secrets.GITHUB_TOKEN}} release-provenance: - needs: [ 'publish' ] + needs: ["publish"] permissions: actions: read diff --git a/.github/workflows/release-please.yml b/.github/workflows/release-please.yml index d3c53a43..d22e462e 100644 --- a/.github/workflows/release-please.yml +++ b/.github/workflows/release-please.yml @@ -22,22 +22,22 @@ jobs: id: release build-ruby-gem: - needs: [ 'release-package' ] + needs: ["release-package"] if: ${{ needs.release-package.outputs.release-created == 'true' }} uses: ./.github/workflows/build-gem.yml with: - version: '3.0' + version: "3.2" build-jruby-gem: - needs: [ 'release-package' ] + needs: ["release-package"] if: ${{ needs.release-package.outputs.release-created == 'true' }} uses: ./.github/workflows/build-gem.yml with: - version: 'jruby-9.4' + version: "jruby-9.4" publish: runs-on: ubuntu-latest - needs: [ 'release-package', 'build-ruby-gem', 'build-jruby-gem' ] + needs: ["release-package", "build-ruby-gem", "build-jruby-gem"] if: ${{ needs.release-package.outputs.release-created == 'true' }} outputs: @@ -52,14 +52,14 @@ jobs: - uses: ./.github/actions/setup with: - version: '3.0' + version: "3.2" install-dependencies: false - uses: launchdarkly/gh-actions/actions/release-secrets@release-secrets-v1.2.0 - name: 'Get rubygems API key' + name: "Get rubygems API key" with: aws_assume_role: ${{ vars.AWS_ROLE_ARN }} - ssm_parameter_pairs: '/production/common/releasing/rubygems/api_key = GEM_HOST_API_KEY' + ssm_parameter_pairs: "/production/common/releasing/rubygems/api_key = GEM_HOST_API_KEY" - uses: ./.github/actions/build-docs @@ -73,7 +73,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} release-provenance: - needs: [ 'release-package', 'publish' ] + needs: ["release-package", "publish"] if: ${{ needs.release-package.outputs.release-created == 'true' }} permissions: diff --git a/.rubocop.yml b/.rubocop.yml index 963ddc7e..0d93de48 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -2,7 +2,7 @@ plugins: - rubocop-performance AllCops: - TargetRubyVersion: 3.0 + TargetRubyVersion: 3.1 Include: - lib/**/*.rb - spec/**/*.rb @@ -14,78 +14,78 @@ Naming/AccessorMethodName: Enabled: false Style/AccessModifierDeclarations: - Description: 'Access modifiers should be declared to apply to a group of methods or inline before each method, depending on configuration.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#alias-method' + Description: "Access modifiers should be declared to apply to a group of methods or inline before each method, depending on configuration." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#alias-method" Enabled: false Style/Alias: - Description: 'Use alias_method instead of alias.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#alias-method' + Description: "Use alias_method instead of alias." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#alias-method" Enabled: false Style/ArrayJoin: - Description: 'Use Array#join instead of Array#*.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#array-join' + Description: "Use Array#join instead of Array#*." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#array-join" Enabled: false Style/AsciiComments: - Description: 'Use only ascii symbols in comments.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#english-comments' + Description: "Use only ascii symbols in comments." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#english-comments" Enabled: false Naming/AsciiIdentifiers: - Description: 'Use only ascii symbols in identifiers.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#english-identifiers' + Description: "Use only ascii symbols in identifiers." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#english-identifiers" Enabled: false Naming/VariableName: - Description: 'Makes sure that all variables use the configured style, snake_case or camelCase, for their names.' + Description: "Makes sure that all variables use the configured style, snake_case or camelCase, for their names." Enabled: false Style/Attr: - Description: 'Checks for uses of Module#attr.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#attr' + Description: "Checks for uses of Module#attr." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#attr" Enabled: false Metrics/AbcSize: - Description: 'Checks that the ABC size of methods is not higher than the configured maximum.' + Description: "Checks that the ABC size of methods is not higher than the configured maximum." Enabled: false Metrics/BlockLength: - Description: 'Checks if the length of a block exceeds some maximum value.' + Description: "Checks if the length of a block exceeds some maximum value." Enabled: false Metrics/BlockNesting: - Description: 'Avoid excessive block nesting' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#three-is-the-number-thou-shalt-count' + Description: "Avoid excessive block nesting" + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#three-is-the-number-thou-shalt-count" Enabled: false Style/CaseEquality: - Description: 'Avoid explicit use of the case equality operator(===).' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-case-equality' + Description: "Avoid explicit use of the case equality operator(===)." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#no-case-equality" Enabled: false Style/CharacterLiteral: - Description: 'Checks for uses of character literals.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-character-literals' + Description: "Checks for uses of character literals." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#no-character-literals" Enabled: false Style/ClassAndModuleChildren: - Description: 'Checks style of children classes and modules.' + Description: "Checks style of children classes and modules." Enabled: true EnforcedStyle: nested Metrics/ClassLength: - Description: 'Avoid classes longer than 100 lines of code.' + Description: "Avoid classes longer than 100 lines of code." Enabled: false Metrics/ModuleLength: - Description: 'Avoid modules longer than 100 lines of code.' + Description: "Avoid modules longer than 100 lines of code." Enabled: false Style/ClassVars: - Description: 'Avoid the use of class variables.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-class-vars' + Description: "Avoid the use of class variables." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#no-class-vars" Enabled: false Style/CollectionMethods: @@ -97,44 +97,44 @@ Style/CollectionMethods: find_all: select Style/ColonMethodCall: - Description: 'Do not use :: for method call.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#double-colons' + Description: "Do not use :: for method call." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#double-colons" Enabled: false Style/CommentAnnotation: Description: >- - Checks formatting of special comments - (TODO, FIXME, OPTIMIZE, HACK, REVIEW). - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#annotate-keywords' + Checks formatting of special comments + (TODO, FIXME, OPTIMIZE, HACK, REVIEW). + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#annotate-keywords" Enabled: false Metrics/CyclomaticComplexity: Description: >- - A complexity metric that is strongly correlated to the number - of test cases needed to validate a method. + A complexity metric that is strongly correlated to the number + of test cases needed to validate a method. Enabled: false Style/PreferredHashMethods: - Description: 'Checks for use of deprecated Hash methods.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#hash-key' + Description: "Checks for use of deprecated Hash methods." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#hash-key" Enabled: false Style/Documentation: - Description: 'Document classes and non-namespace modules.' + Description: "Document classes and non-namespace modules." Enabled: false Style/DoubleNegation: - Description: 'Checks for uses of double negation (!!).' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-bang-bang' + Description: "Checks for uses of double negation (!!)." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#no-bang-bang" Enabled: false Style/EachWithObject: - Description: 'Prefer `each_with_object` over `inject` or `reduce`.' + Description: "Prefer `each_with_object` over `inject` or `reduce`." Enabled: false Style/EmptyLiteral: - Description: 'Prefer literals to Array.new/Hash.new/String.new.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#literal-array-hash' + Description: "Prefer literals to Array.new/Hash.new/String.new." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#literal-array-hash" Enabled: false # Checks whether the source file has a utf-8 encoding comment or not @@ -144,264 +144,264 @@ Style/Encoding: Enabled: false Style/EvenOdd: - Description: 'Favor the use of Fixnum#even? && Fixnum#odd?' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#predicate-methods' + Description: "Favor the use of Fixnum#even? && Fixnum#odd?" + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#predicate-methods" Enabled: false Naming/FileName: - Description: 'Use snake_case for source file names.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#snake-case-files' + Description: "Use snake_case for source file names." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#snake-case-files" Enabled: false Lint/FlipFlop: - Description: 'Checks for flip flops' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-flip-flops' + Description: "Checks for flip flops" + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#no-flip-flops" Enabled: false Style/FrozenStringLiteralComment: - Description: 'Helps you transition from mutable string literals to frozen string literals.' + Description: "Helps you transition from mutable string literals to frozen string literals." Enabled: false Style/FormatString: - Description: 'Enforce the use of Kernel#sprintf, Kernel#format or String#%.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#sprintf' + Description: "Enforce the use of Kernel#sprintf, Kernel#format or String#%." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#sprintf" Enabled: false Style/GlobalVars: - Description: 'Do not introduce global variables.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#instance-vars' - Reference: 'https://www.zenspider.com/ruby/quickref.html' + Description: "Do not introduce global variables." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#instance-vars" + Reference: "https://www.zenspider.com/ruby/quickref.html" Enabled: false Style/GuardClause: - Description: 'Check for conditionals that can be replaced with guard clauses' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals' + Description: "Check for conditionals that can be replaced with guard clauses" + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals" Enabled: false Style/IfUnlessModifier: Description: >- - Favor modifier if/unless usage when you have a - single-line body. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier' + Favor modifier if/unless usage when you have a + single-line body. + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier" Enabled: false Style/IfWithSemicolon: - Description: 'Do not use if x; .... Use the ternary operator instead.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-semicolon-ifs' + Description: "Do not use if x; .... Use the ternary operator instead." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#no-semicolon-ifs" Enabled: false Style/InlineComment: - Description: 'Avoid inline comments.' + Description: "Avoid inline comments." Enabled: false Style/Lambda: - Description: 'Use the new lambda literal syntax for single-line blocks.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#lambda-multi-line' + Description: "Use the new lambda literal syntax for single-line blocks." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#lambda-multi-line" Enabled: false Style/LambdaCall: - Description: 'Use lambda.call(...) instead of lambda.(...).' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#proc-call' + Description: "Use lambda.call(...) instead of lambda.(...)." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#proc-call" Enabled: false Style/LineEndConcatenation: Description: >- - Use \ instead of + or << to concatenate two string literals at - line end. + Use \ instead of + or << to concatenate two string literals at + line end. Enabled: false Layout/LineLength: - Description: 'Limit lines to 150 characters.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#80-character-limits' + Description: "Limit lines to 150 characters." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#80-character-limits" Max: 180 Metrics/MethodLength: - Description: 'Avoid methods longer than 10 lines of code.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#short-methods' + Description: "Avoid methods longer than 10 lines of code." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#short-methods" Enabled: false Style/ModuleFunction: - Description: 'Checks for usage of `extend self` in modules.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#module-function' + Description: "Checks for usage of `extend self` in modules." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#module-function" Enabled: false Style/NegatedIf: Description: >- - Favor unless over if for negative conditions - (or control flow or). - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#unless-for-negatives' + Favor unless over if for negative conditions + (or control flow or). + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#unless-for-negatives" Enabled: true Style/NegatedWhile: - Description: 'Favor until over while for negative conditions.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#until-for-negatives' + Description: "Favor until over while for negative conditions." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#until-for-negatives" Enabled: true Style/Next: - Description: 'Use `next` to skip iteration instead of a condition at the end.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals' + Description: "Use `next` to skip iteration instead of a condition at the end." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals" Enabled: false Style/NilComparison: - Description: 'Prefer x.nil? to x == nil.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#predicate-methods' + Description: "Prefer x.nil? to x == nil." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#predicate-methods" Enabled: false Style/Not: - Description: 'Use ! instead of not.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#bang-not-not' + Description: "Use ! instead of not." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#bang-not-not" Enabled: false Style/NumericLiterals: Description: >- - Add underscores to large numeric literals to improve their - readability. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#underscores-in-numerics' + Add underscores to large numeric literals to improve their + readability. + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#underscores-in-numerics" Enabled: false Style/OneLineConditional: Description: >- - Favor the ternary operator(?:) over - if/then/else/end constructs. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#ternary-operator' + Favor the ternary operator(?:) over + if/then/else/end constructs. + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#ternary-operator" Enabled: false Naming/BinaryOperatorParameterName: - Description: 'When defining binary operators, name the argument other.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#other-arg' + Description: "When defining binary operators, name the argument other." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#other-arg" Enabled: false Metrics/ParameterLists: - Description: 'Avoid parameter lists longer than three or four parameters.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#too-many-params' + Description: "Avoid parameter lists longer than three or four parameters." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#too-many-params" Enabled: false Metrics/PerceivedComplexity: Enabled: false Style/PercentLiteralDelimiters: - Description: 'Use `%`-literal delimiters consistently' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-literal-braces' + Description: "Use `%`-literal delimiters consistently" + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#percent-literal-braces" Enabled: false Style/PerlBackrefs: - Description: 'Avoid Perl-style regex back references.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers' + Description: "Avoid Perl-style regex back references." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers" Enabled: false Naming/PredicatePrefix: - Description: 'Check the names of predicate methods.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark' + Description: "Check the names of predicate methods." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark" ForbiddenPrefixes: - is_ Exclude: - spec/**/* Style/Proc: - Description: 'Use proc instead of Proc.new.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#proc' + Description: "Use proc instead of Proc.new." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#proc" Enabled: false Style/RaiseArgs: - Description: 'Checks the arguments passed to raise/fail.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#exception-class-messages' + Description: "Checks the arguments passed to raise/fail." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#exception-class-messages" Enabled: false Style/RegexpLiteral: - Description: 'Use / or %r around regular expressions.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-r' + Description: "Use / or %r around regular expressions." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#percent-r" Enabled: false Style/SelfAssignment: Description: >- - Checks for places where self-assignment shorthand should have - been used. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#self-assignment' + Checks for places where self-assignment shorthand should have + been used. + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#self-assignment" Enabled: false Style/SingleLineBlockParams: - Description: 'Enforces the names of some block params.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#reduce-blocks' + Description: "Enforces the names of some block params." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#reduce-blocks" Enabled: false Style/SingleLineMethods: - Description: 'Avoid single-line methods.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-single-line-methods' + Description: "Avoid single-line methods." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#no-single-line-methods" Enabled: false Style/SignalException: - Description: 'Checks for proper usage of fail and raise.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#fail-method' + Description: "Checks for proper usage of fail and raise." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#fail-method" Enabled: false Style/SpecialGlobalVars: - Description: 'Avoid Perl-style global variables.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-cryptic-perlisms' + Description: "Avoid Perl-style global variables." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#no-cryptic-perlisms" Enabled: false Style/StringLiterals: - Description: 'Checks if uses of quotes match the configured preference.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#consistent-string-literals' + Description: "Checks if uses of quotes match the configured preference." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#consistent-string-literals" EnforcedStyle: double_quotes Enabled: false Style/TrailingCommaInArguments: - Description: 'Checks for trailing comma in argument lists.' - StyleGuide: '#no-trailing-params-comma' + Description: "Checks for trailing comma in argument lists." + StyleGuide: "#no-trailing-params-comma" Enabled: true Style/TrailingCommaInArrayLiteral: - Description: 'Checks for trailing comma in array and hash literals.' + Description: "Checks for trailing comma in array and hash literals." EnforcedStyleForMultiline: comma Style/TrailingCommaInHashLiteral: - Description: 'Checks for trailing comma in array and hash literals.' + Description: "Checks for trailing comma in array and hash literals." EnforcedStyleForMultiline: comma Style/TrivialAccessors: - Description: 'Prefer attr_* methods to trivial readers/writers.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#attr_family' + Description: "Prefer attr_* methods to trivial readers/writers." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#attr_family" Enabled: false Style/VariableInterpolation: Description: >- - Don't interpolate global, instance and class variables - directly in strings. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#curlies-interpolate' + Don't interpolate global, instance and class variables + directly in strings. + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#curlies-interpolate" Enabled: false Style/WhenThen: - Description: 'Use when x then ... for one-line cases.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#one-line-cases' + Description: "Use when x then ... for one-line cases." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#one-line-cases" Enabled: false Style/WhileUntilModifier: Description: >- - Favor modifier while/until usage when you have a - single-line body. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#while-as-a-modifier' + Favor modifier while/until usage when you have a + single-line body. + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#while-as-a-modifier" Enabled: false Style/WordArray: - Description: 'Use %w or %W for arrays of words.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-w' + Description: "Use %w or %W for arrays of words." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#percent-w" Enabled: false # Layout Layout/DotPosition: - Description: 'Checks the position of the dot in multi-line method calls.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains' + Description: "Checks the position of the dot in multi-line method calls." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains" EnforcedStyle: leading Layout/ExtraSpacing: - Description: 'Do not use unnecessary spacing.' + Description: "Do not use unnecessary spacing." Enabled: true AllowBeforeTrailingComments: true Layout/MultilineOperationIndentation: Description: >- - Checks indentation of binary operations that span more than - one line. + Checks indentation of binary operations that span more than + one line. Enabled: true EnforcedStyle: indented @@ -422,20 +422,20 @@ Layout/TrailingWhitespace: Lint/AmbiguousOperator: Description: >- - Checks for ambiguous operators in the first argument of a - method invocation without parentheses. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-as-args' + Checks for ambiguous operators in the first argument of a + method invocation without parentheses. + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#parens-as-args" Enabled: false Lint/AmbiguousRegexpLiteral: Description: >- - Checks for ambiguous regexp literals in the first argument of - a method invocation without parenthesis. + Checks for ambiguous regexp literals in the first argument of + a method invocation without parenthesis. Enabled: false Lint/AssignmentInCondition: Description: "Don't use assignment in conditions." - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition' + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition" Enabled: false Lint/CircularArgumentReference: @@ -444,143 +444,143 @@ Lint/CircularArgumentReference: Layout/ConditionPosition: Description: >- - Checks for condition placed in a confusing position relative to - the keyword. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#same-line-condition' + Checks for condition placed in a confusing position relative to + the keyword. + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#same-line-condition" Enabled: false Lint/DeprecatedClassMethods: - Description: 'Check for deprecated class method calls.' + Description: "Check for deprecated class method calls." Enabled: false Lint/DuplicateHashKey: - Description: 'Check for duplicate keys in hash literals.' + Description: "Check for duplicate keys in hash literals." Enabled: false Lint/EachWithObjectArgument: - Description: 'Check for immutable argument given to each_with_object.' + Description: "Check for immutable argument given to each_with_object." Enabled: false Lint/ElseLayout: - Description: 'Check for odd code arrangement in an else block.' + Description: "Check for odd code arrangement in an else block." Enabled: false Lint/FormatParameterMismatch: - Description: 'The number of parameters to format/sprint must match the fields.' + Description: "The number of parameters to format/sprint must match the fields." Enabled: false Lint/SuppressedException: Description: "Don't suppress exception." - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions' + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions" Enabled: false Lint/LiteralAsCondition: - Description: 'Checks of literals used in conditions.' + Description: "Checks of literals used in conditions." Enabled: false Lint/LiteralInInterpolation: - Description: 'Checks for literals used in interpolation.' + Description: "Checks for literals used in interpolation." Enabled: false Lint/Loop: Description: >- - Use Kernel#loop with break rather than begin/end/until or - begin/end/while for post-loop tests. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#loop-with-break' + Use Kernel#loop with break rather than begin/end/until or + begin/end/while for post-loop tests. + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#loop-with-break" Enabled: false Lint/NestedMethodDefinition: - Description: 'Do not use nested method definitions.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-methods' + Description: "Do not use nested method definitions." + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#no-nested-methods" Enabled: false Lint/NonLocalExitFromIterator: - Description: 'Do not use return in iterator to cause non-local exit.' + Description: "Do not use return in iterator to cause non-local exit." Enabled: false Lint/ParenthesesAsGroupedExpression: Description: >- - Checks for method calls with a space before the opening - parenthesis. - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-no-spaces' + Checks for method calls with a space before the opening + parenthesis. + StyleGuide: "https://github.com/bbatsov/ruby-style-guide#parens-no-spaces" Enabled: false Lint/RequireParentheses: Description: >- - Use parentheses in the method call to avoid confusion - about precedence. + Use parentheses in the method call to avoid confusion + about precedence. Enabled: false Lint/UnderscorePrefixedVariableName: - Description: 'Do not use prefix `_` for a variable that is used.' + Description: "Do not use prefix `_` for a variable that is used." Enabled: false Lint/RedundantCopDisableDirective: Description: >- - Checks for rubocop:disable comments that can be removed. - Note: this cop is not disabled when disabling all cops. - It must be explicitly disabled. + Checks for rubocop:disable comments that can be removed. + Note: this cop is not disabled when disabling all cops. + It must be explicitly disabled. Enabled: false Lint/Void: - Description: 'Possible use of operator/literal/variable in void context.' + Description: "Possible use of operator/literal/variable in void context." Enabled: false # Performance Performance/CaseWhenSplat: Description: >- - Place `when` conditions that use splat at the end - of the list of `when` branches. + Place `when` conditions that use splat at the end + of the list of `when` branches. Enabled: false Performance/Count: Description: >- - Use `count` instead of `select...size`, `reject...size`, - `select...count`, `reject...count`, `select...length`, - and `reject...length`. + Use `count` instead of `select...size`, `reject...size`, + `select...count`, `reject...count`, `select...length`, + and `reject...length`. Enabled: false Performance/Detect: Description: >- - Use `detect` instead of `select.first`, `find_all.first`, - `select.last`, and `find_all.last`. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerabledetect-vs-enumerableselectfirst-code' + Use `detect` instead of `select.first`, `find_all.first`, + `select.last`, and `find_all.last`. + Reference: "https://github.com/JuanitoFatas/fast-ruby#enumerabledetect-vs-enumerableselectfirst-code" Enabled: false Performance/FlatMap: Description: >- - Use `Enumerable#flat_map` - instead of `Enumerable#map...Array#flatten(1)` - or `Enumberable#collect..Array#flatten(1)` - Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablemaparrayflatten-vs-enumerableflat_map-code' + Use `Enumerable#flat_map` + instead of `Enumerable#map...Array#flatten(1)` + or `Enumberable#collect..Array#flatten(1)` + Reference: "https://github.com/JuanitoFatas/fast-ruby#enumerablemaparrayflatten-vs-enumerableflat_map-code" Enabled: false Performance/ReverseEach: - Description: 'Use `reverse_each` instead of `reverse.each`.' - Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablereverseeach-vs-enumerablereverse_each-code' + Description: "Use `reverse_each` instead of `reverse.each`." + Reference: "https://github.com/JuanitoFatas/fast-ruby#enumerablereverseeach-vs-enumerablereverse_each-code" Enabled: false Style/Sample: Description: >- - Use `sample` instead of `shuffle.first`, - `shuffle.last`, and `shuffle[Fixnum]`. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code' + Use `sample` instead of `shuffle.first`, + `shuffle.last`, and `shuffle[Fixnum]`. + Reference: "https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code" Enabled: false Performance/Size: Description: >- - Use `size` instead of `count` for counting - the number of elements in `Array` and `Hash`. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#arraycount-vs-arraysize-code' + Use `size` instead of `count` for counting + the number of elements in `Array` and `Hash`. + Reference: "https://github.com/JuanitoFatas/fast-ruby#arraycount-vs-arraysize-code" Enabled: false Performance/StringReplacement: Description: >- - Use `tr` instead of `gsub` when you are replacing the same - number of characters. Use `delete` instead of `gsub` when - you are deleting characters. - Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringgsub-vs-stringtr-code' + Use `tr` instead of `gsub` when you are replacing the same + number of characters. Use `delete` instead of `gsub` when + you are deleting characters. + Reference: "https://github.com/JuanitoFatas/fast-ruby#stringgsub-vs-stringtr-code" Enabled: false # Disabled temporarily while we bring code base inline diff --git a/README.md b/README.md index 68b49faa..25ded85e 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ LaunchDarkly overview Supported Ruby versions ----------------------- -This version of the LaunchDarkly SDK has a minimum Ruby version of 3.0.0, or 9.3.0 for JRuby. +This version of the LaunchDarkly SDK has a minimum Ruby version of 3.1.0. Getting started ----------- diff --git a/launchdarkly-server-sdk.gemspec b/launchdarkly-server-sdk.gemspec index 1d2e8a0f..c3f2cc51 100644 --- a/launchdarkly-server-sdk.gemspec +++ b/launchdarkly-server-sdk.gemspec @@ -18,7 +18,7 @@ Gem::Specification.new do |spec| spec.files = Dir["lib/**/*.rb", "README.md", "LICENSE.txt"] spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } spec.require_paths = ["lib"] - spec.required_ruby_version = ">= 3.0.0" + spec.required_ruby_version = ">= 3.1.0" spec.add_development_dependency "aws-sdk-dynamodb", "~> 1.57" spec.add_development_dependency "bundler", "~> 2.2", ">= 2.2.3" From 2009ab43063bdb6cc9e67e8aa150170518bffdec Mon Sep 17 00:00:00 2001 From: Matthew Keeler Date: Mon, 14 Jul 2025 14:51:56 -0400 Subject: [PATCH 2/3] fix: Bump ld-eventsource to v2.2.5 --- launchdarkly-server-sdk.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launchdarkly-server-sdk.gemspec b/launchdarkly-server-sdk.gemspec index c3f2cc51..a154e5d2 100644 --- a/launchdarkly-server-sdk.gemspec +++ b/launchdarkly-server-sdk.gemspec @@ -37,7 +37,7 @@ Gem::Specification.new do |spec| spec.add_runtime_dependency "benchmark", "~> 0.1", ">= 0.1.1" spec.add_runtime_dependency "concurrent-ruby", "~> 1.1" - spec.add_runtime_dependency "ld-eventsource", "2.2.3" + spec.add_runtime_dependency "ld-eventsource", "2.2.5" spec.add_runtime_dependency "observer", "~> 0.1.2" spec.add_runtime_dependency "semantic", "~> 1.6" spec.add_runtime_dependency "zlib", "~> 3.1" unless RUBY_PLATFORM == "java" From 34a4494075f1c5118bed90a574753462d4e516ba Mon Sep 17 00:00:00 2001 From: Matthew Keeler Date: Mon, 14 Jul 2025 14:56:46 -0400 Subject: [PATCH 3/3] Ignore lint error --- lib/ldclient-rb/integrations/test_data/flag_builder.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ldclient-rb/integrations/test_data/flag_builder.rb b/lib/ldclient-rb/integrations/test_data/flag_builder.rb index 2c4aa1b0..ac04ec89 100644 --- a/lib/ldclient-rb/integrations/test_data/flag_builder.rb +++ b/lib/ldclient-rb/integrations/test_data/flag_builder.rb @@ -487,7 +487,7 @@ def build # class FlagRuleBuilder # @private - FlagRuleClause = Struct.new(:contextKind, :attribute, :op, :values, :negate, keyword_init: true) + FlagRuleClause = Struct.new(:contextKind, :attribute, :op, :values, :negate, keyword_init: true) # rubocop:disable Naming/MethodName: # @private def initialize(flag_builder)