diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..0dd2f88 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,17 @@ +version: 2.1 + +jobs: + sonarqube_analysis: + docker: + - image: cimg/ruby:3.3 + steps: + - checkout + - run: + name: Skip SonarQube for open source gem + command: echo "SonarQube analysis skipped - not configured for this repository" + +workflows: + version: 2 + build: + jobs: + - sonarqube_analysis diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 0000000..4bc6bb9 --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,42 @@ +name: Tests + +on: + push: + branches: [master] + pull_request: + branches: [master] + +jobs: + test: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + ruby: ['2.7', '3.0', '3.1', '3.2', '3.3'] + gemfile: + - rails_70 + - rails_71 + - rails_72 + - rails_80 + exclude: + # Rails 7.2 requires Ruby >= 3.1 + - ruby: '2.7' + gemfile: rails_72 + - ruby: '3.0' + gemfile: rails_72 + # Rails 8.0 requires Ruby >= 3.2 + - ruby: '2.7' + gemfile: rails_80 + - ruby: '3.0' + gemfile: rails_80 + - ruby: '3.1' + gemfile: rails_80 + env: + BUNDLE_GEMFILE: gemfiles/${{ matrix.gemfile }}.gemfile + steps: + - uses: actions/checkout@v4 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + bundler-cache: true + - run: bundle exec rake test diff --git a/.gitignore b/.gitignore index 81bbd69..9e952ff 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ log/*.log *.swp Gemfile.lock +gemfiles/*.lock pkg/ test/dummy/db/*.sqlite3 test/dummy/db/*.sqlite3-journal diff --git a/.rubocop.yml b/.rubocop.yml index d1b6e0f..df3071f 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,5 +1,7 @@ AllCops: - TargetRubyVersion: 2.3 + TargetRubyVersion: 2.7 + NewCops: disable + SuggestExtensions: false Include: - '**/Rakefile' - '**/config.ru' @@ -10,665 +12,76 @@ AllCops: - 'vendor/bundle/**/*' - 'node_modules/**/*' - 'test/dummy/bin/**/*' + - 'gemfiles/**/*' -Naming/AccessorMethodName: - Description: Check the naming of accessor methods for get_/set_. - Enabled: false - -Naming/MemoizedInstanceVariableName: - Enabled: false +Layout/LineLength: + Max: 150 -# Waiting for https://github.com/bbatsov/rubocop/pull/5230 -Style/FormatStringToken: +Metrics/AbcSize: Enabled: false -Style/Alias: - Description: 'Use alias_method instead of alias.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#alias-method' +Metrics/BlockLength: Enabled: false -Style/ArrayJoin: - Description: 'Use Array#join instead of Array#*.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#array-join' +Metrics/ClassLength: Enabled: false -Style/AsciiComments: - Description: 'Use only ascii symbols in comments.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#english-comments' +Metrics/CyclomaticComplexity: Enabled: false -Naming/AsciiIdentifiers: - Description: 'Use only ascii symbols in identifiers.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#english-identifiers' +Metrics/MethodLength: Enabled: false -Style/Attr: - Description: 'Checks for uses of Module#attr.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#attr' +Metrics/ModuleLength: Enabled: false -Metrics/BlockNesting: - Description: 'Avoid excessive block nesting' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#three-is-the-number-thou-shalt-count' +Metrics/ParameterLists: Enabled: false -Style/CaseEquality: - Description: 'Avoid explicit use of the case equality operator(===).' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-case-equality' +Naming/AccessorMethodName: Enabled: false -Style/CharacterLiteral: - Description: 'Checks for uses of character literals.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-character-literals' +Naming/MemoizedInstanceVariableName: Enabled: false Style/ClassAndModuleChildren: - Description: 'Checks style of children classes and modules.' Enabled: true EnforcedStyle: nested Exclude: - 'test/**/*' -Style/TrailingCommaInHashLiteral: - Enabled: false - -Metrics/ClassLength: - Description: 'Avoid classes longer than 100 lines of code.' - Enabled: false - -Metrics/ModuleLength: - 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' - Enabled: false - -Style/CollectionMethods: - Enabled: true - PreferredMethods: - find: detect - inject: reduce - collect: map - find_all: select - -Style/ColonMethodCall: - 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' - Enabled: false - -Metrics/AbcSize: - Description: >- - A calculated magnitude based on number of assignments, - branches, and conditions. - Enabled: false - -Metrics/BlockLength: - Enabled: false - CountComments: true # count full line comments? - Max: 25 - ExcludedMethods: [] - Exclude: - - "**/*.rake" - - "spec/**/*" - -Metrics/CyclomaticComplexity: - Description: >- - A complexity metric that is strongly correlated to the number - of test cases needed to validate a method. - Enabled: false - -Rails/Delegate: - Description: 'Prefer delegate method for delegations.' - Enabled: false - -Style/PreferredHashMethods: - Description: 'Checks use of `has_key?` and `has_value?` Hash methods.' - StyleGuide: '#hash-key' - Enabled: false - Style/Documentation: - 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' - Enabled: false - -Style/EachWithObject: - 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' - Enabled: false - -# Checks whether the source file has a utf-8 encoding comment or not -# AutoCorrectEncodingComment must match the regex -# /#.*coding\s?[:=]\s?(?:UTF|utf)-8/ -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' - Enabled: false - -Naming/FileName: - Description: 'Use snake_case for source file names.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#snake-case-files' Enabled: false Style/FrozenStringLiteralComment: - Description: >- - Add the frozen_string_literal comment to the top of files - to help transition from Ruby 2.3.0 to Ruby 3.0. - Enabled: false - -Lint/FlipFlop: - Description: 'Checks for flip flops' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-flip-flops' - Enabled: false - -Style/FormatString: - 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: 'http://www.zenspider.com/Languages/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' - 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' - 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' - Enabled: false - -Style/InlineComment: - 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' - Enabled: false - -Style/LambdaCall: - 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. - Enabled: false - -Layout/LineLength: - Description: 'Limit lines to 80 characters.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#80-character-limits' - Max: 150 - -Metrics/MethodLength: - 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' - Enabled: false - -Style/MultilineBlockChain: - Description: 'Avoid multi-line chains of blocks.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#single-line-blocks' - 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' - Enabled: false - -Style/NegatedWhile: - Description: 'Favor until over while for negative conditions.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#until-for-negatives' - Enabled: false - -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' - Enabled: false - -Style/NilComparison: - 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' - 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' - 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' - Enabled: false - -Naming/BinaryOperatorParameterName: - 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' - Enabled: false - -Style/PercentLiteralDelimiters: - 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' - Enabled: false - -Naming/PredicateName: - Description: 'Check the names of predicate methods.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark' - NamePrefixBlacklist: - - is_ - Exclude: - - spec/**/* - -Style/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' - Enabled: false - -Style/RegexpLiteral: - 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' - Enabled: false - -Style/SingleLineBlockParams: - 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' - Enabled: false - -Style/EmptyMethod: - Enabled: true - EnforcedStyle: expanded - -Style/SignalException: - 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' 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' EnforcedStyle: double_quotes - Enabled: true Style/TrailingCommaInArguments: - Description: 'Checks for trailing comma in argument lists.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas' EnforcedStyleForMultiline: comma - SupportedStylesForMultiline: - - comma - - consistent_comma - - no_comma - Enabled: true Style/TrailingCommaInArrayLiteral: - Description: 'Checks for trailing comma in array and hash literals.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas' EnforcedStyleForMultiline: comma - SupportedStylesForMultiline: - - comma - - consistent_comma - - no_comma - Enabled: true - -Style/TrivialAccessors: - 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' - Enabled: false - -Style/WhenThen: - 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' +Style/TrailingCommaInHashLiteral: Enabled: false Style/WordArray: - Description: 'Use %w or %W for arrays of words.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-w' - Enabled: true EnforcedStyle: brackets Style/SymbolArray: - Enabled: true EnforcedStyle: brackets -Style/AndOr: - # Whether `and` and `or` are banned only in conditionals (conditionals) - # or completely (always). - EnforcedStyle: always - SupportedStyles: - - always - - conditionals - Exclude: - - '**/app/controllers/**/*' - Style/RedundantBegin: Enabled: false -# Layout - -Layout/ParameterAlignment: - Description: 'Here we check if the parameters on a multi-line method call or definition are aligned.' - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-double-indent' - Enabled: false - 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' EnforcedStyle: leading -Layout/ExtraSpacing: - Description: 'Do not use unnecessary spacing.' - Enabled: true - Layout/MultilineOperationIndentation: - Description: >- - Checks indentation of binary operations that span more than - one line. - Enabled: true EnforcedStyle: indented Layout/MultilineMethodCallIndentation: - Description: >- - Checks indentation of method calls with the dot operator - that span more than one line. - Enabled: true EnforcedStyle: indented - -Layout/InitialIndentation: - Description: >- - Checks the indentation of the first non-blank non-comment line in a file. - Enabled: false - -# Lint - -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' - Enabled: false - -Lint/AmbiguousRegexpLiteral: - Description: >- - 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' - Enabled: false - -Lint/CircularArgumentReference: - Description: "Don't refer to the keyword argument in the default value." - Enabled: false - -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' - Enabled: false - -Lint/DeprecatedClassMethods: - Description: 'Check for deprecated class method calls.' - Enabled: false - -Lint/DuplicatedHashKey: - Description: 'Check for duplicate keys in hash literals.' - Enabled: false - -Lint/EachWithObjectArgument: - Description: 'Check for immutable argument given to each_with_object.' - Enabled: false - -Lint/ElseLayout: - 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.' - Enabled: false - -Lint/SuppressedException: - Description: "Don't suppress exception." - StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions' - Enabled: false - -Lint/LiteralInInterpolation: - 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' - Enabled: false - -Lint/NestedMethodDefinition: - 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.' - 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' - Enabled: false - -Lint/RequireParentheses: - Description: >- - 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.' - Enabled: false - -Lint/Void: - 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. - Enabled: false - -Performance/Count: - Description: >- - 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' - 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' - Enabled: false - -Performance/ReverseEach: - 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' - 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' - 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' - Enabled: false - -# Rails - -Rails/ActionFilter: - Description: 'Enforces consistent use of action filter methods.' - Enabled: false - -Rails/Date: - Description: >- - Checks the correct usage of date aware methods, - such as Date.today, Date.current etc. - Enabled: false - -Rails/FindBy: - Description: 'Prefer find_by over where.first.' - Enabled: false - -Rails/FindEach: - Description: 'Prefer all.find_each over all.find.' - Enabled: false - -Rails/HasAndBelongsToMany: - Description: 'Prefer has_many :through to has_and_belongs_to_many.' - Enabled: false - -Rails/Output: - Description: 'Checks for calls to puts, print, etc.' - Enabled: false - -Rails/ReadWriteAttribute: - Description: >- - Checks for read_attribute(:attr) and - write_attribute(:attr, val). - Enabled: false - -Rails/ScopeArgs: - Description: 'Checks the arguments of ActiveRecord scopes.' - Enabled: false - -Rails/TimeZone: - Description: 'Checks the correct usage of time zone aware methods.' - StyleGuide: 'https://github.com/bbatsov/rails-style-guide#time' - Reference: 'http://danilenko.org/2012/7/6/rails_timezones' - Enabled: false - -Rails/Validation: - Description: 'Use validates :attribute, hash of validations.' - Enabled: false diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..38d348e --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +ruby 3.3.10 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 5f1c0e2..0000000 --- a/.travis.yml +++ /dev/null @@ -1,26 +0,0 @@ -language: ruby -rvm: - - 2.3 - - 2.4 - - 2.5 - -cache: bundler - -before_install: - - gem update --system --no-document - - gem install rake - - gem install bundler - -script: bundle exec rake - -deploy: - provider: rubygems - api_key: - secure: pReiutaKz4gErUDrBoLt/a4oMC+KjXBgsUW6uVhdlsvBQ1IYiUjWoV09dBrxlsCsE9Pp0f5vwShKXIe5rUY1AGwXTWxyObNNBffRIz2YrolOJieG8vwEJ7v8sy2GGaxT/mVa1KK0HvNHXI/rpGA+Z3Qg5HqKpvDjrB36CKZgzU9CWrK1+wncuoatHDj5ZDsseXCWaEmQxQjHsYML4Wh2mhfjlthMXuMxAegDb9iY2VydnNZuQUd8An2NJF6BGFOKQySwM2gtrpNO6rhjlMBhIVdZkFx4g2lFJGuyykon0HOrj1jBtJtoHrUWLcu959pfZcqLDO1ut0ZVOXjaxouNu8Hf9+qCXzKwfAAmevkCD3u8LYg0W3MFkBadseyxCUYgInFxBib8Qw4JaVPrF0ccoaOBZYsY77MB+KEx830F/Ag2JLjVJ0CugJ9idzah/vjZLcyNkSi9QBcYeQzbtAU3jMsC0P4yrRYbx4z1eAWHLOPHjr87L8GZY12DXzbjV/Sp9EjpEq4DGBVQRLPkEjvdJiju6e3JzMHAb3CkDtduhdAmYTdUr8qWNSE2da4Hu3+8fRGQVkGdFkJM/WCOuEKBlC041KGGVO4KSJfMBfl4ZX2SmZoc0KC3qNPKK/l2UmF+b5PPXqIpGa0tsCmrXHfevmpJPgwMnvSWdOztxeBlNoU= - gem: chemex - on: - tags: true - repo: procore/chemex - -notifications: - email: false diff --git a/Appraisals b/Appraisals index 86d4bed..cfa6e26 100644 --- a/Appraisals +++ b/Appraisals @@ -1,7 +1,21 @@ -appraise 'rails-61' do - gem 'rails', '~> 6.1' -end - appraise 'rails-70' do gem 'rails', '~> 7.0.0' + gem 'sqlite3', '~> 1.4' + gem 'minitest', '~> 5.0' +end + +appraise 'rails-71' do + gem 'rails', '~> 7.1.0' + gem 'sqlite3', '~> 1.4' + gem 'minitest', '~> 5.0' +end + +appraise 'rails-72' do + gem 'rails', '~> 7.2.0' + gem 'minitest', '~> 5.0' +end + +appraise 'rails-80' do + gem 'rails', '~> 8.0.0' + gem 'minitest', '~> 5.0' end \ No newline at end of file diff --git a/README.md b/README.md index 5187ee7..615f8e8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Sift -[![Build Status](https://travis-ci.org/procore/sift.svg?branch=master)](https://travis-ci.org/procore/sift) +[![Tests](https://github.com/procore/sift/actions/workflows/test.yml/badge.svg)](https://github.com/procore/sift/actions/workflows/test.yml) A tool to build your own filters and sorts with Rails and Active Record! diff --git a/gemfiles/rails_61.gemfile.lock b/gemfiles/rails_61.gemfile.lock deleted file mode 100644 index 593ef9c..0000000 --- a/gemfiles/rails_61.gemfile.lock +++ /dev/null @@ -1,186 +0,0 @@ -PATH - remote: .. - specs: - procore-sift (1.0.0) - activerecord (>= 6.1) - -GEM - remote: https://rubygems.org/ - specs: - actioncable (6.1.7.2) - actionpack (= 6.1.7.2) - activesupport (= 6.1.7.2) - nio4r (~> 2.0) - websocket-driver (>= 0.6.1) - actionmailbox (6.1.7.2) - actionpack (= 6.1.7.2) - activejob (= 6.1.7.2) - activerecord (= 6.1.7.2) - activestorage (= 6.1.7.2) - activesupport (= 6.1.7.2) - mail (>= 2.7.1) - actionmailer (6.1.7.2) - actionpack (= 6.1.7.2) - actionview (= 6.1.7.2) - activejob (= 6.1.7.2) - activesupport (= 6.1.7.2) - mail (~> 2.5, >= 2.5.4) - rails-dom-testing (~> 2.0) - actionpack (6.1.7.2) - actionview (= 6.1.7.2) - activesupport (= 6.1.7.2) - rack (~> 2.0, >= 2.0.9) - rack-test (>= 0.6.3) - rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (6.1.7.2) - actionpack (= 6.1.7.2) - activerecord (= 6.1.7.2) - activestorage (= 6.1.7.2) - activesupport (= 6.1.7.2) - nokogiri (>= 1.8.5) - actionview (6.1.7.2) - activesupport (= 6.1.7.2) - builder (~> 3.1) - erubi (~> 1.4) - rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.1, >= 1.2.0) - activejob (6.1.7.2) - activesupport (= 6.1.7.2) - globalid (>= 0.3.6) - activemodel (6.1.7.2) - activesupport (= 6.1.7.2) - activerecord (6.1.7.2) - activemodel (= 6.1.7.2) - activesupport (= 6.1.7.2) - activestorage (6.1.7.2) - actionpack (= 6.1.7.2) - activejob (= 6.1.7.2) - activerecord (= 6.1.7.2) - activesupport (= 6.1.7.2) - marcel (~> 1.0) - mini_mime (>= 1.1.0) - activesupport (6.1.7.2) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 1.6, < 2) - minitest (>= 5.1) - tzinfo (~> 2.0) - zeitwerk (~> 2.3) - appraisal (2.4.1) - bundler - rake - thor (>= 0.14.0) - ast (2.4.2) - builder (3.2.4) - coderay (1.1.3) - concurrent-ruby (1.2.2) - crass (1.0.6) - date (3.3.3) - erubi (1.12.0) - globalid (1.1.0) - activesupport (>= 5.0) - i18n (1.12.0) - concurrent-ruby (~> 1.0) - jaro_winkler (1.5.4) - loofah (2.19.1) - crass (~> 1.0.2) - nokogiri (>= 1.5.9) - mail (2.8.1) - mini_mime (>= 0.1.1) - net-imap - net-pop - net-smtp - marcel (1.0.2) - method_source (1.0.0) - mini_mime (1.1.2) - minitest (5.17.0) - net-imap (0.3.4) - date - net-protocol - net-pop (0.1.2) - net-protocol - net-protocol (0.2.1) - timeout - net-smtp (0.3.3) - net-protocol - nio4r (2.5.8) - nokogiri (1.14.2-x86_64-darwin) - racc (~> 1.4) - parallel (1.22.1) - parser (3.1.3.0) - ast (~> 2.4.1) - pry (0.14.1) - coderay (~> 1.1) - method_source (~> 1.0) - racc (1.6.2) - rack (2.2.6.3) - rack-test (2.0.2) - rack (>= 1.3) - rails (6.1.7.2) - actioncable (= 6.1.7.2) - actionmailbox (= 6.1.7.2) - actionmailer (= 6.1.7.2) - actionpack (= 6.1.7.2) - actiontext (= 6.1.7.2) - actionview (= 6.1.7.2) - activejob (= 6.1.7.2) - activemodel (= 6.1.7.2) - activerecord (= 6.1.7.2) - activestorage (= 6.1.7.2) - activesupport (= 6.1.7.2) - bundler (>= 1.15.0) - railties (= 6.1.7.2) - sprockets-rails (>= 2.0.0) - rails-dom-testing (2.0.3) - activesupport (>= 4.2.0) - nokogiri (>= 1.6) - rails-html-sanitizer (1.5.0) - loofah (~> 2.19, >= 2.19.1) - railties (6.1.7.2) - actionpack (= 6.1.7.2) - activesupport (= 6.1.7.2) - method_source - rake (>= 12.2) - thor (~> 1.0) - rainbow (3.1.1) - rake (13.0.6) - rubocop (0.71.0) - jaro_winkler (~> 1.5.1) - parallel (~> 1.10) - parser (>= 2.6) - rainbow (>= 2.2.2, < 4.0) - ruby-progressbar (~> 1.7) - unicode-display_width (>= 1.4.0, < 1.7) - ruby-progressbar (1.11.0) - sprockets (4.2.0) - concurrent-ruby (~> 1.0) - rack (>= 2.2.4, < 4) - sprockets-rails (3.4.2) - actionpack (>= 5.2) - activesupport (>= 5.2) - sprockets (>= 3.0.0) - sqlite3 (1.5.4-x86_64-darwin) - thor (1.2.1) - timeout (0.3.2) - tzinfo (2.0.6) - concurrent-ruby (~> 1.0) - unicode-display_width (1.6.1) - websocket-driver (0.7.5) - websocket-extensions (>= 0.1.0) - websocket-extensions (0.1.5) - zeitwerk (2.6.7) - -PLATFORMS - x86_64-darwin-21 - -DEPENDENCIES - appraisal - procore-sift! - pry - rails (~> 6.1) - rake - rubocop (= 0.71.0) - sqlite3 - -BUNDLED WITH - 2.3.26 diff --git a/gemfiles/rails_70.gemfile b/gemfiles/rails_70.gemfile index 9af0ae3..a13491b 100644 --- a/gemfiles/rails_70.gemfile +++ b/gemfiles/rails_70.gemfile @@ -3,5 +3,7 @@ source "https://rubygems.org" gem "rails", "~> 7.0.0" +gem "sqlite3", "~> 1.4" +gem "minitest", "~> 5.0" gemspec path: "../" diff --git a/gemfiles/rails_70.gemfile.lock b/gemfiles/rails_70.gemfile.lock deleted file mode 100644 index 0b5a6ce..0000000 --- a/gemfiles/rails_70.gemfile.lock +++ /dev/null @@ -1,185 +0,0 @@ -PATH - remote: .. - specs: - procore-sift (1.0.0) - activerecord (>= 6.1) - -GEM - remote: https://rubygems.org/ - specs: - actioncable (7.0.4.2) - actionpack (= 7.0.4.2) - activesupport (= 7.0.4.2) - nio4r (~> 2.0) - websocket-driver (>= 0.6.1) - actionmailbox (7.0.4.2) - actionpack (= 7.0.4.2) - activejob (= 7.0.4.2) - activerecord (= 7.0.4.2) - activestorage (= 7.0.4.2) - activesupport (= 7.0.4.2) - mail (>= 2.7.1) - net-imap - net-pop - net-smtp - actionmailer (7.0.4.2) - actionpack (= 7.0.4.2) - actionview (= 7.0.4.2) - activejob (= 7.0.4.2) - activesupport (= 7.0.4.2) - mail (~> 2.5, >= 2.5.4) - net-imap - net-pop - net-smtp - rails-dom-testing (~> 2.0) - actionpack (7.0.4.2) - actionview (= 7.0.4.2) - activesupport (= 7.0.4.2) - rack (~> 2.0, >= 2.2.0) - rack-test (>= 0.6.3) - rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.0, >= 1.2.0) - actiontext (7.0.4.2) - actionpack (= 7.0.4.2) - activerecord (= 7.0.4.2) - activestorage (= 7.0.4.2) - activesupport (= 7.0.4.2) - globalid (>= 0.6.0) - nokogiri (>= 1.8.5) - actionview (7.0.4.2) - activesupport (= 7.0.4.2) - builder (~> 3.1) - erubi (~> 1.4) - rails-dom-testing (~> 2.0) - rails-html-sanitizer (~> 1.1, >= 1.2.0) - activejob (7.0.4.2) - activesupport (= 7.0.4.2) - globalid (>= 0.3.6) - activemodel (7.0.4.2) - activesupport (= 7.0.4.2) - activerecord (7.0.4.2) - activemodel (= 7.0.4.2) - activesupport (= 7.0.4.2) - activestorage (7.0.4.2) - actionpack (= 7.0.4.2) - activejob (= 7.0.4.2) - activerecord (= 7.0.4.2) - activesupport (= 7.0.4.2) - marcel (~> 1.0) - mini_mime (>= 1.1.0) - activesupport (7.0.4.2) - concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 1.6, < 2) - minitest (>= 5.1) - tzinfo (~> 2.0) - appraisal (2.4.1) - bundler - rake - thor (>= 0.14.0) - ast (2.4.2) - builder (3.2.4) - coderay (1.1.3) - concurrent-ruby (1.2.2) - crass (1.0.6) - date (3.3.3) - erubi (1.12.0) - globalid (1.1.0) - activesupport (>= 5.0) - i18n (1.12.0) - concurrent-ruby (~> 1.0) - jaro_winkler (1.5.4) - loofah (2.19.1) - crass (~> 1.0.2) - nokogiri (>= 1.5.9) - mail (2.8.1) - mini_mime (>= 0.1.1) - net-imap - net-pop - net-smtp - marcel (1.0.2) - method_source (1.0.0) - mini_mime (1.1.2) - minitest (5.17.0) - net-imap (0.3.4) - date - net-protocol - net-pop (0.1.2) - net-protocol - net-protocol (0.2.1) - timeout - net-smtp (0.3.3) - net-protocol - nio4r (2.5.8) - nokogiri (1.14.2-x86_64-darwin) - racc (~> 1.4) - parallel (1.22.1) - parser (3.1.3.0) - ast (~> 2.4.1) - pry (0.14.1) - coderay (~> 1.1) - method_source (~> 1.0) - racc (1.6.2) - rack (2.2.6.3) - rack-test (2.0.2) - rack (>= 1.3) - rails (7.0.4.2) - actioncable (= 7.0.4.2) - actionmailbox (= 7.0.4.2) - actionmailer (= 7.0.4.2) - actionpack (= 7.0.4.2) - actiontext (= 7.0.4.2) - actionview (= 7.0.4.2) - activejob (= 7.0.4.2) - activemodel (= 7.0.4.2) - activerecord (= 7.0.4.2) - activestorage (= 7.0.4.2) - activesupport (= 7.0.4.2) - bundler (>= 1.15.0) - railties (= 7.0.4.2) - rails-dom-testing (2.0.3) - activesupport (>= 4.2.0) - nokogiri (>= 1.6) - rails-html-sanitizer (1.5.0) - loofah (~> 2.19, >= 2.19.1) - railties (7.0.4.2) - actionpack (= 7.0.4.2) - activesupport (= 7.0.4.2) - method_source - rake (>= 12.2) - thor (~> 1.0) - zeitwerk (~> 2.5) - rainbow (3.1.1) - rake (13.0.6) - rubocop (0.71.0) - jaro_winkler (~> 1.5.1) - parallel (~> 1.10) - parser (>= 2.6) - rainbow (>= 2.2.2, < 4.0) - ruby-progressbar (~> 1.7) - unicode-display_width (>= 1.4.0, < 1.7) - ruby-progressbar (1.11.0) - sqlite3 (1.5.4-x86_64-darwin) - thor (1.2.1) - timeout (0.3.2) - tzinfo (2.0.6) - concurrent-ruby (~> 1.0) - unicode-display_width (1.6.1) - websocket-driver (0.7.5) - websocket-extensions (>= 0.1.0) - websocket-extensions (0.1.5) - zeitwerk (2.6.7) - -PLATFORMS - x86_64-darwin-21 - -DEPENDENCIES - appraisal - procore-sift! - pry - rails (~> 7.0.0) - rake - rubocop (= 0.71.0) - sqlite3 - -BUNDLED WITH - 2.3.26 diff --git a/gemfiles/rails_71.gemfile b/gemfiles/rails_71.gemfile new file mode 100644 index 0000000..ef8b4ac --- /dev/null +++ b/gemfiles/rails_71.gemfile @@ -0,0 +1,9 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "rails", "~> 7.1.0" +gem "sqlite3", "~> 1.4" +gem "minitest", "~> 5.0" + +gemspec path: "../" diff --git a/gemfiles/rails_61.gemfile b/gemfiles/rails_72.gemfile similarity index 65% rename from gemfiles/rails_61.gemfile rename to gemfiles/rails_72.gemfile index c34b486..6980f6c 100644 --- a/gemfiles/rails_61.gemfile +++ b/gemfiles/rails_72.gemfile @@ -2,6 +2,7 @@ source "https://rubygems.org" -gem "rails", "~> 6.1" +gem "rails", "~> 7.2.0" +gem "minitest", "~> 5.0" gemspec path: "../" diff --git a/gemfiles/rails_80.gemfile b/gemfiles/rails_80.gemfile new file mode 100644 index 0000000..4f5217e --- /dev/null +++ b/gemfiles/rails_80.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "rails", "~> 8.0.0" +gem "minitest", "~> 5.0" + +gemspec path: "../" diff --git a/lib/sift/version.rb b/lib/sift/version.rb index 6941049..5eceb55 100644 --- a/lib/sift/version.rb +++ b/lib/sift/version.rb @@ -1,3 +1,3 @@ module Sift - VERSION = "1.0.0".freeze + VERSION = "1.0.1".freeze end diff --git a/sift.gemspec b/sift.gemspec index 3ca713e..3327237 100644 --- a/sift.gemspec +++ b/sift.gemspec @@ -10,8 +10,8 @@ Gem::Specification.new do |s| s.authors = ["Procore Technologies"] s.email = ["dev@procore.com"] s.homepage = "https://github.com/procore/sift" - s.summary = "Summary of Sift." - s.description = "Easily write arbitrary filters" + s.summary = "Build dynamic filters and sorts for Rails and Active Record" + s.description = "A declarative DSL for building filters and sorts with Rails and Active Record" s.license = "MIT" s.files = Dir["{app,config,db,lib}/**/*", @@ -21,12 +21,12 @@ Gem::Specification.new do |s| s.required_ruby_version = ">= 2.7.0" - s.add_dependency "activerecord", ">= 6.1" + s.add_dependency "activerecord", ">= 7.0" s.add_development_dependency "pry" - s.add_development_dependency "rails", ">= 6.1" + s.add_development_dependency "rails", ">= 7.0" s.add_development_dependency "rake" - s.add_development_dependency "rubocop", "0.71.0" + s.add_development_dependency "rubocop", "~> 1.68" s.add_development_dependency "sqlite3" s.add_development_dependency "appraisal" end diff --git a/test/test_helper.rb b/test/test_helper.rb index 30b7e47..54fbaf2 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,6 +1,7 @@ # Configure Rails Environment ENV["RAILS_ENV"] = "test" +require "ostruct" require File.expand_path("../test/dummy/config/environment.rb", __dir__) ActiveRecord::Migrator.migrations_paths = [File.expand_path("../test/dummy/db/migrate", __dir__)] require "rails/test_help"