diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 953cc7013..7f907097a 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -14,11 +14,11 @@ jobs:
strategy:
fail-fast: false
matrix:
- ruby: ['2.4', '2.5', '2.6']
+ ruby: ['2.7']
steps:
- name: Checkout
- uses: actions/checkout@v1
+ uses: actions/checkout@v3
- name: Setup Ruby
uses: ruby/setup-ruby@v1
@@ -26,12 +26,8 @@ jobs:
ruby-version: ${{ matrix.ruby }}
bundler-cache: true
- - name: Install sqlite
- run: |
- sudo apt-get install libsqlite3-dev
-
- name: Run Tests
- run: INTEGRATION_TESTS=1 bundle exec rspec
+ run: bundle exec rspec
- name: Rubocop
run: bundle exec rubocop
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 5ce6ec569..633796457 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -1,54 +1,61 @@
-name: "Code scanning - action"
+name: "CodeQL"
on:
push:
- branches-ignore:
- - pr/*
- - scratch/*
+ branches: [ "develop" ]
pull_request:
+ # The branches below must be a subset of the branches above
+ branches: [ "develop" ]
schedule:
- - cron: '0 20 * * 7'
+ - cron: '26 5 * * 4'
jobs:
- CodeQL-Build:
-
+ analyze:
+ name: Analyze
runs-on: ubuntu-latest
+ permissions:
+ actions: read
+ contents: read
+ security-events: write
+
+ strategy:
+ fail-fast: false
+ matrix:
+ language: [ 'ruby' ]
steps:
- name: Checkout repository
- uses: actions/checkout@v2
- with:
- # We must fetch at least the immediate parents so that if this is
- # a pull request then we can checkout the head.
- fetch-depth: 2
-
- # If this run was triggered by a pull request event, then checkout
- # the head of the pull request instead of the merge commit.
- - run: git checkout HEAD^2
- if: ${{ github.event_name == 'pull_request' }}
-
+ uses: actions/checkout@v3
+
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
- uses: github/codeql-action/init@v1
- # Override language selection by uncommenting this and choosing your languages
- # with:
- # languages: go, javascript, csharp, python, cpp, java
+ uses: github/codeql-action/init@v2
+ with:
+ languages: ${{ matrix.language }}
+ # If you wish to specify custom queries, you can do so here or in a config file.
+ # By default, queries listed here will override any specified in a config file.
+ # Prefix the list here with "+" to use these queries and those in the config file.
+
+ # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
+ # queries: security-extended,security-and-quality
- # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+
+ # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
- uses: github/codeql-action/autobuild@v1
+ uses: github/codeql-action/autobuild@v2
# ℹ️ Command-line programs to run using the OS shell.
- # 📚 https://git.io/JvXDl
+ # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
- # and modify them (or add more) to build your code if your project
- # uses a compiled language
+ # If the Autobuild fails above, remove it and uncomment the following three lines.
+ # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
- #- run: |
- # make bootstrap
- # make release
+ # - run: |
+ # echo "Run, Build Application using script"
+ # ./location_of_script_within_repo/buildscript.sh
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v1
+ uses: github/codeql-action/analyze@v2
+ with:
+ category: "/language:${{matrix.language}}"
diff --git a/.rubocop.yml b/.rubocop.yml
index 0ee94770e..4d06aa989 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -1,12 +1,17 @@
inherit_from:
- .rubocop_todo.yml
+require:
+ - rubocop-rake
+ - rubocop-rspec
+
AllCops:
Exclude:
- 'vendor/**/*'
- 'spec/fixtures/**/*'
- 'tmp/**/*'
- 'spec/integration/**/*'
+ NewCops: enable
Metrics/BlockLength:
Exclude:
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 246a23ea6..8d3c7701d 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -1,6 +1,6 @@
# This configuration was generated by
# `rubocop --auto-gen-config`
-# on 2020-04-06 10:26:11 +0900 using RuboCop version 0.68.1.
+# on 2022-06-14 03:17:11 UTC using RuboCop version 1.12.1.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
@@ -8,7 +8,7 @@
# Offense count: 1
# Cop supports --auto-correct.
-# Configuration parameters: TreatCommentsAsGroupSeparators, Include.
+# Configuration parameters: TreatCommentsAsGroupSeparators, ConsiderPunctuation, Include.
# Include: **/*.gemspec
Gemspec/OrderedDependencies:
Exclude:
@@ -21,17 +21,6 @@ Gemspec/RequiredRubyVersion:
Exclude:
- 'annotate.gemspec'
-# Offense count: 65
-# Cop supports --auto-correct.
-# Configuration parameters: EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle.
-# SupportedHashRocketStyles: key, separator, table
-# SupportedColonStyles: key, separator, table
-# SupportedLastArgumentHashStyles: always_inspect, always_ignore, ignore_implicit, ignore_explicit
-Layout/AlignHash:
- Exclude:
- - 'lib/generators/annotate/templates/auto_annotate_models.rake'
- - 'spec/lib/annotate/annotate_models_spec.rb'
-
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyleAlignWith.
@@ -64,13 +53,24 @@ Layout/ExtraSpacing:
- 'lib/annotate/annotate_models.rb'
- 'lib/tasks/annotate_routes.rake'
-# Offense count: 16
+# Offense count: 14
# Cop supports --auto-correct.
# Configuration parameters: IndentationWidth.
# SupportedStyles: special_inside_parentheses, consistent, align_brackets
-Layout/IndentFirstArrayElement:
+Layout/FirstArrayElementIndentation:
EnforcedStyle: consistent
+# Offense count: 65
+# Cop supports --auto-correct.
+# Configuration parameters: AllowMultipleStyles, EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle.
+# SupportedHashRocketStyles: key, separator, table
+# SupportedColonStyles: key, separator, table
+# SupportedLastArgumentHashStyles: always_inspect, always_ignore, ignore_implicit, ignore_explicit
+Layout/HashAlignment:
+ Exclude:
+ - 'lib/generators/annotate/templates/auto_annotate_models.rake'
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+
# Offense count: 5
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, IndentationWidth.
@@ -89,7 +89,8 @@ Layout/SpaceAroundEqualsInParameterDefault:
# Offense count: 4
# Cop supports --auto-correct.
-# Configuration parameters: AllowForAlignment.
+# Configuration parameters: AllowForAlignment, EnforcedStyleForExponentOperator.
+# SupportedStylesForExponentOperator: space, no_space
Layout/SpaceAroundOperators:
Exclude:
- 'lib/annotate/annotate_models.rb'
@@ -136,7 +137,7 @@ Layout/SpaceInsideParens:
Exclude:
- 'lib/annotate/annotate_models.rb'
-# Offense count: 2
+# Offense count: 4
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle.
# SupportedStyles: space, no_space
@@ -157,10 +158,13 @@ Lint/AssignmentInCondition:
Exclude:
- 'lib/annotate/annotate_models.rb'
-# Offense count: 1
-Lint/HandleExceptions:
+# Offense count: 7
+# Configuration parameters: AllowedMethods.
+# AllowedMethods: enums
+Lint/ConstantDefinitionInBlock:
Exclude:
- - 'bin/annotate'
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+ - 'spec/lib/annotate/annotate_routes_spec.rb'
# Offense count: 1
# Cop supports --auto-correct.
@@ -186,13 +190,29 @@ Lint/ShadowingOuterLocalVariable:
Exclude:
- 'Rakefile'
-# Offense count: 22
+# Offense count: 1
+# Configuration parameters: AllowComments, AllowNil.
+Lint/SuppressedException:
+ Exclude:
+ - 'bin/annotate'
+
+# Offense count: 3
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle.
+# SupportedStyles: strict, consistent
+Lint/SymbolConversion:
+ Exclude:
+ - 'lib/annotate/annotate_models.rb'
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+
+# Offense count: 20
+# Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
Metrics/AbcSize:
- Max: 103
+ Max: 155
# Offense count: 7
-# Configuration parameters: CountComments, ExcludedMethods.
-# ExcludedMethods: refine
+# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
+# IgnoredMethods: refine
Metrics/BlockLength:
Max: 53
@@ -201,27 +221,29 @@ Metrics/BlockLength:
Metrics/BlockNesting:
Max: 4
-# Offense count: 12
+# Offense count: 16
+# Configuration parameters: IgnoredMethods.
Metrics/CyclomaticComplexity:
- Max: 25
+ Max: 30
-# Offense count: 30
-# Configuration parameters: CountComments, ExcludedMethods.
+# Offense count: 31
+# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
Metrics/MethodLength:
Max: 40
-# Offense count: 9
+# Offense count: 15
+# Configuration parameters: IgnoredMethods.
Metrics/PerceivedComplexity:
- Max: 28
+ Max: 33
# Offense count: 1
Naming/AccessorMethodName:
Exclude:
- 'lib/annotate.rb'
-# Offense count: 103
-# Configuration parameters: Blacklist.
-# Blacklist: (?-mix:(^|\s)(EO[A-Z]{1}|END)(\s|$))
+# Offense count: 105
+# Configuration parameters: ForbiddenDelimiters.
+# ForbiddenDelimiters: (?-mix:(^|\s)(EO[A-Z]{1}|END)(\s|$))
Naming/HeredocDelimiterNaming:
Exclude:
- 'spec/lib/annotate/annotate_models_spec.rb'
@@ -236,37 +258,253 @@ Naming/MemoizedInstanceVariableName:
# Offense count: 1
# Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
-# AllowedNames: io, id, to, by, on, in, at, ip, db
-Naming/UncommunicativeMethodParamName:
+# AllowedNames: at, by, db, id, in, io, ip, of, on, os, pp, to
+Naming/MethodParameterName:
Exclude:
- 'Rakefile'
+# Offense count: 13
+# Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers.
+# SupportedStyles: snake_case, normalcase, non_integer
+# AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339
+Naming/VariableNumber:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+ - 'spec/lib/annotate/helpers_spec.rb'
+
+# Offense count: 1
+RSpec/BeforeAfterAll:
+ Exclude:
+ - 'spec/spec_helper.rb'
+ - 'spec/rails_helper.rb'
+ - 'spec/support/**/*.rb'
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+
+# Offense count: 46
+# Configuration parameters: Prefixes.
+# Prefixes: when, with, without
+RSpec/ContextWording:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+ - 'spec/lib/annotate/annotate_routes_spec.rb'
+ - 'spec/lib/annotate/parser_spec.rb'
+
+# Offense count: 1
+# Configuration parameters: IgnoredMetadata.
+RSpec/DescribeClass:
+ Exclude:
+ - 'spec/lib/tasks/annotate_models_migrate_spec.rb'
+
+# Offense count: 149
+# Cop supports --auto-correct.
+# Configuration parameters: SkipBlocks, EnforcedStyle.
+# SupportedStyles: described_class, explicit
+RSpec/DescribedClass:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models/file_patterns_spec.rb'
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+ - 'spec/lib/annotate/annotate_routes_spec.rb'
+ - 'spec/lib/annotate/parser_spec.rb'
+ - 'spec/lib/annotate_spec.rb'
+
+# Offense count: 32
+# Cop supports --auto-correct.
+RSpec/EmptyLineAfterFinalLet:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+ - 'spec/lib/annotate/helpers_spec.rb'
+ - 'spec/lib/annotate/parser_spec.rb'
+
+# Offense count: 1
+# Cop supports --auto-correct.
+RSpec/EmptyLineAfterSubject:
+ Exclude:
+ - 'spec/lib/annotate/helpers_spec.rb'
+
+# Offense count: 14
+# Configuration parameters: Max.
+RSpec/ExampleLength:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models/file_patterns_spec.rb'
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+ - 'spec/lib/annotate/parser_spec.rb'
+ - 'spec/lib/tasks/annotate_models_migrate_spec.rb'
+
+# Offense count: 22
+# Cop supports --auto-correct.
+# Configuration parameters: CustomTransform, IgnoredWords.
+RSpec/ExampleWording:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+ - 'spec/lib/annotate/annotate_routes_spec.rb'
+ - 'spec/lib/tasks/annotate_models_migrate_spec.rb'
+
+# Offense count: 9
+RSpec/ExpectInHook:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+ - 'spec/lib/annotate/annotate_routes_spec.rb'
+
+# Offense count: 10
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle.
+# SupportedStyles: implicit, each, example
+RSpec/HookArgument:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+ - 'spec/lib/annotate/annotate_routes_spec.rb'
+ - 'spec/lib/annotate/parser_spec.rb'
+
+# Offense count: 1
+# Cop supports --auto-correct.
+RSpec/HooksBeforeExamples:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+
+# Offense count: 78
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle.
+# SupportedStyles: single_line_only, single_statement_only, disallow
+RSpec/ImplicitSubject:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models/file_patterns_spec.rb'
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+ - 'spec/lib/annotate/helpers_spec.rb'
+
+# Offense count: 51
+# Configuration parameters: AssignmentOnly.
+RSpec/InstanceVariable:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+
+# Offense count: 4
+# Cop supports --auto-correct.
+RSpec/LeadingSubject:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+
+# Offense count: 9
+RSpec/LeakyConstantDeclaration:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+ - 'spec/lib/annotate/annotate_routes_spec.rb'
+
+# Offense count: 108
+# Configuration parameters: EnforcedStyle.
+# SupportedStyles: have_received, receive
+RSpec/MessageSpies:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+ - 'spec/lib/annotate/annotate_routes_spec.rb'
+ - 'spec/lib/annotate/helpers_spec.rb'
+ - 'spec/lib/annotate/parser_spec.rb'
+ - 'spec/lib/tasks/annotate_models_migrate_spec.rb'
+
+# Offense count: 36
+RSpec/MultipleExpectations:
+ Max: 4
+
+# Offense count: 66
+# Configuration parameters: AllowSubject.
+RSpec/MultipleMemoizedHelpers:
+ Max: 9
+
+# Offense count: 6
+# Configuration parameters: IgnoreSharedExamples.
+RSpec/NamedSubject:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+ - 'spec/lib/annotate/helpers_spec.rb'
+ - 'spec/lib/tasks/annotate_models_migrate_spec.rb'
+
+# Offense count: 140
+RSpec/NestedGroups:
+ Max: 9
+
# Offense count: 2
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle.
+# SupportedStyles: not_to, to_not
+RSpec/NotToNot:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+ - 'spec/lib/annotate/helpers_spec.rb'
+
+# Offense count: 5
+RSpec/RepeatedExampleGroupBody:
+ Exclude:
+ - 'spec/lib/tasks/annotate_models_migrate_spec.rb'
+
+# Offense count: 2
+RSpec/RepeatedExampleGroupDescription:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+
+# Offense count: 3
+# Cop supports --auto-correct.
+# Configuration parameters: EnforcedStyle.
+# SupportedStyles: and_return, block
+RSpec/ReturnFromStub:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+
+# Offense count: 7
+# Configuration parameters: IgnoreNameless, IgnoreSymbolicNames.
+RSpec/VerifiedDoubles:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+ - 'spec/lib/annotate/annotate_routes_spec.rb'
+
+# Offense count: 16
+# Cop supports --auto-correct.
+Rake/Desc:
+ Exclude:
+ - 'Rakefile'
+ - 'lib/generators/annotate/templates/auto_annotate_models.rake'
+ - 'lib/tasks/annotate_models.rake'
+ - 'lib/tasks/annotate_routes.rake'
+
+# Offense count: 6
+Rake/DuplicateTask:
+ Exclude:
+ - 'Rakefile'
+ - 'lib/tasks/annotate_models.rake'
+ - 'lib/tasks/annotate_routes.rake'
+
+# Offense count: 3
+# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle.
-# SupportedStyles: inline, group
-Style/AccessModifierDeclarations:
+# SupportedStyles: separated, grouped
+Style/AccessorGrouping:
Exclude:
- 'lib/annotate/annotate_models.rb'
- - 'lib/annotate/annotate_routes/header_generator.rb'
# Offense count: 1
+# Cop supports --auto-correct.
+# Configuration parameters: AllowOnConstant.
Style/CaseEquality:
Exclude:
- 'lib/annotate/annotate_models.rb'
# Offense count: 1
# Cop supports --auto-correct.
-# Configuration parameters: AutoCorrect, EnforcedStyle.
-# SupportedStyles: nested, compact
-Style/ClassAndModuleChildren:
+Style/CaseLikeIf:
Exclude:
- - 'lib/annotate/active_record_patch.rb'
+ - 'lib/annotate/annotate_routes.rb'
# Offense count: 2
Style/ClassVars:
Exclude:
- 'lib/tasks/annotate_models_migrate.rake'
+# Offense count: 1
+# Cop supports --auto-correct.
+# Configuration parameters: Keywords.
+# Keywords: TODO, FIXME, OPTIMIZE, HACK, REVIEW, NOTE
+Style/CommentAnnotation:
+ Exclude:
+ - 'lib/annotate/annotate_models.rb'
+
# Offense count: 1
# Cop supports --auto-correct.
Style/Dir:
@@ -274,6 +512,7 @@ Style/Dir:
- 'bin/annotate'
# Offense count: 10
+# Configuration parameters: AllowedConstants.
Style/Documentation:
Exclude:
- 'spec/**/*'
@@ -309,17 +548,16 @@ Style/FormatString:
Exclude:
- 'lib/annotate/annotate_models.rb'
-# Offense count: 23
-# Configuration parameters: EnforcedStyle.
+# Offense count: 12
+# Configuration parameters: MaxUnannotatedPlaceholdersAllowed, IgnoredMethods.
# SupportedStyles: annotated, template, unannotated
Style/FormatStringToken:
- Exclude:
- - 'lib/annotate/annotate_models.rb'
+ EnforcedStyle: unannotated
# Offense count: 30
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle.
-# SupportedStyles: when_needed, always, never
+# SupportedStyles: always, always_true, never
Style/FrozenStringLiteralComment:
Enabled: false
@@ -329,6 +567,13 @@ Style/GuardClause:
Exclude:
- 'lib/tasks/annotate_models_migrate.rake'
+# Offense count: 1
+# Cop supports --auto-correct.
+# Configuration parameters: AllowSplatArgument.
+Style/HashConversion:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+
# Offense count: 3
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, UseHashRocketsWithSymbolValues, PreferHashRocketsForNonAlnumEndingSymbols.
@@ -353,11 +598,6 @@ Style/InverseMethods:
Exclude:
- 'Rakefile'
-# Offense count: 1
-Style/MethodMissingSuper:
- Exclude:
- - 'lib/annotate/active_record_patch.rb'
-
# Offense count: 1
Style/MissingRespondToMissing:
Exclude:
@@ -374,17 +614,30 @@ Style/MultilineBlockChain:
- 'Rakefile'
- 'lib/annotate/annotate_models.rb'
+# Offense count: 2
+# Cop supports --auto-correct.
+Style/MultilineIfModifier:
+ Exclude:
+ - 'spec/lib/annotate/annotate_models_spec.rb'
+ - 'spec/lib/annotate/annotate_routes_spec.rb'
+
+# Offense count: 2
+# Cop supports --auto-correct.
+Style/NegatedIfElseCondition:
+ Exclude:
+ - 'lib/annotate.rb'
+
# Offense count: 1
# Cop supports --auto-correct.
-# Configuration parameters: Whitelist.
-# Whitelist: be, be_a, be_an, be_between, be_falsey, be_kind_of, be_instance_of, be_truthy, be_within, eq, eql, end_with, include, match, raise_error, respond_to, start_with
+# Configuration parameters: AllowedMethods.
+# AllowedMethods: be, be_a, be_an, be_between, be_falsey, be_kind_of, be_instance_of, be_truthy, be_within, eq, eql, end_with, include, match, raise_error, respond_to, start_with
Style/NestedParenthesizedCalls:
Exclude:
- 'bin/annotate'
# Offense count: 3
# Cop supports --auto-correct.
-# Configuration parameters: AutoCorrect, EnforcedStyle, IgnoredMethods.
+# Configuration parameters: EnforcedStyle, IgnoredMethods.
# SupportedStyles: predicate, comparison
Style/NumericPredicate:
Exclude:
@@ -392,7 +645,7 @@ Style/NumericPredicate:
- 'lib/annotate.rb'
- 'lib/annotate/annotate_models.rb'
-# Offense count: 12
+# Offense count: 13
# Cop supports --auto-correct.
# Configuration parameters: PreferredDelimiters.
Style/PercentLiteralDelimiters:
@@ -406,12 +659,19 @@ Style/PercentLiteralDelimiters:
# Offense count: 1
# Cop supports --auto-correct.
-# Configuration parameters: EnforcedStyle.
+# Configuration parameters: EnforcedStyle, AllowedCompactTypes.
# SupportedStyles: compact, exploded
Style/RaiseArgs:
Exclude:
- 'lib/annotate/annotate_models.rb'
+# Offense count: 2
+# Cop supports --auto-correct.
+# Configuration parameters: Methods.
+Style/RedundantArgument:
+ Exclude:
+ - 'lib/annotate/annotate_routes/header_generator.rb'
+
# Offense count: 3
# Cop supports --auto-correct.
Style/RedundantBegin:
@@ -425,6 +685,25 @@ Style/RedundantParentheses:
Exclude:
- 'lib/annotate/annotate_models.rb'
+# Offense count: 2
+# Cop supports --auto-correct.
+Style/RedundantPercentQ:
+ Exclude:
+ - 'annotate.gemspec'
+
+# Offense count: 3
+# Cop supports --auto-correct.
+Style/RedundantRegexpCharacterClass:
+ Exclude:
+ - 'lib/annotate/annotate_models.rb'
+
+# Offense count: 3
+# Cop supports --auto-correct.
+Style/RedundantRegexpEscape:
+ Exclude:
+ - 'lib/annotate/annotate_models.rb'
+ - 'lib/annotate/annotate_routes/header_generator.rb'
+
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: AllowMultipleReturnValues.
@@ -463,12 +742,19 @@ Style/RescueStandardError:
# Offense count: 2
# Cop supports --auto-correct.
-# Configuration parameters: ConvertCodeThatCanStartToReturnNil, Whitelist.
-# Whitelist: present?, blank?, presence, try, try!
+# Configuration parameters: ConvertCodeThatCanStartToReturnNil, AllowedMethods.
+# AllowedMethods: present?, blank?, presence, try, try!
Style/SafeNavigation:
Exclude:
- 'lib/annotate/annotate_models.rb'
+# Offense count: 3
+# Cop supports --auto-correct.
+Style/SlicingWithRange:
+ Exclude:
+ - 'lib/annotate/annotate_models.rb'
+ - 'lib/annotate/annotate_routes/header_generator.rb'
+
# Offense count: 15
# Cop supports --auto-correct.
Style/StderrPuts:
@@ -477,7 +763,13 @@ Style/StderrPuts:
- 'lib/annotate.rb'
- 'lib/annotate/annotate_models.rb'
-# Offense count: 55
+# Offense count: 13
+# Cop supports --auto-correct.
+Style/StringConcatenation:
+ Exclude:
+ - 'lib/annotate/annotate_models.rb'
+
+# Offense count: 57
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline.
# SupportedStyles: single_quotes, double_quotes
@@ -520,15 +812,9 @@ Style/TrailingCommaInArrayLiteral:
Exclude:
- 'spec/lib/annotate/annotate_models_spec.rb'
-# Offense count: 2
-# Cop supports --auto-correct.
-Style/UnneededPercentQ:
- Exclude:
- - 'annotate.gemspec'
-
-# Offense count: 381
+# Offense count: 52
# Cop supports --auto-correct.
# Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
# URISchemes: http, https
-Metrics/LineLength:
+Layout/LineLength:
Max: 264
diff --git a/.tool-versions b/.tool-versions
index 9b6768d19..9e83a384b 100644
--- a/.tool-versions
+++ b/.tool-versions
@@ -1 +1 @@
-ruby 2.6.7
+ruby 2.7.3
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 05d05d26d..000000000
--- a/.travis.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-language: ruby
-rvm:
- - 2.4.9
- - 2.5.7
- - 2.6.5
-
-env:
- - RAILS_ENV=development RACK_ENV=development INTEGRATION_TESTS=1
-
-cache: bundler
-
-addons:
- apt_packages:
- - libsqlite3-dev
-
-before_install:
- - gem update --system --no-document --quiet
-
-install:
- - bundle install --jobs=3 --retry=3
-
-script:
- - bundle exec rspec
- - bundle exec rubocop
-
-jobs:
- include:
- - stage: gem release
- if: tag =~ ^v
- rvm: 2.6.5
- script: echo "Deploying to rubygems.org ..."
- deploy:
- provider: rubygems
- api_key: $RUBYGEMS_API_KEY
- gem: annotate
- on:
- tags: true
- repo: ctran/annotate_models
diff --git a/Gemfile b/Gemfile
index 4acd9cb84..0998ee0d0 100644
--- a/Gemfile
+++ b/Gemfile
@@ -19,11 +19,10 @@ group :development, :test do
gem 'guard-rspec', require: false
gem 'rspec', require: false
- gem 'rubocop', '~> 0.68.1', require: false unless RUBY_VERSION =~ /^1.8/
- # gem 'rubocop', '~> 1.12', require: false
- # gem 'rubocop-rake', require: false
- # gem 'rubocop-rspec', require: false
- # gem 'simplecov', require: false
+ gem 'rubocop', '~> 1.12.0', require: false
+ gem 'rubocop-rake', require: false
+ gem 'rubocop-rspec', '~> 2.2.0', require: false
+ gem 'simplecov', require: false
gem 'terminal-notifier-guard', require: false
gem 'codeclimate-test-reporter'
diff --git a/README.md b/README.md
index ea489f587..bac488d5d 100644
--- a/README.md
+++ b/README.md
@@ -2,11 +2,9 @@
[](http://badge.fury.io/rb/annotate)
[](https://rubygems.org/gems/annotate)
-[](https://travis-ci.org/ctran/annotate_models)
[](https://github.com/ctran/annotate_models/actions?workflow=CI)
[](https://coveralls.io/r/ctran/annotate_models?branch=develop)
[](https://codeclimate.com/github/ctran/annotate_models)
-[](http://inch-ci.org/github/ctran/annotate_models)
Add a comment summarizing the current schema to the top or bottom of each of your...
@@ -224,6 +222,7 @@ you can do so with a simple environment variable, instead of editing the
-a, --active-admin Annotate active_admin models
-v, --version Show the current version of this gem
-m, --show-migration Include the migration version number in the annotation
+ -c, --show-check-constraints List the table's check constraints in the annotation
-k, --show-foreign-keys List the table's foreign key constraints in the annotation
--ck, --complete-foreign-keys
Complete foreign key names in the annotation
@@ -251,6 +250,7 @@ you can do so with a simple environment variable, instead of editing the
don't show default for given column types, separated by commas (e.g. `json,jsonb,hstore`)
--ignore-unknown-models don't display warnings for bad model files
--with-comment include database comments in model annotations
+ --with-comment-column include database comments in model annotations, as its own column, after all others
### Option: `additional_file_patterns`
diff --git a/lib/annotate/annotate_models.rb b/lib/annotate/annotate_models.rb
index fc503839b..dc2901a32 100644
--- a/lib/annotate/annotate_models.rb
+++ b/lib/annotate/annotate_models.rb
@@ -124,14 +124,18 @@ def retrieve_indexes_from_table(klass)
# Try to search the table without prefix
table_name_without_prefix = table_name.to_s.sub(klass.table_name_prefix, '')
- klass.connection.indexes(table_name_without_prefix)
+ if klass.connection.table_exists?(table_name_without_prefix)
+ klass.connection.indexes(table_name_without_prefix)
+ else
+ []
+ end
end
# Use the column information in an ActiveRecord class
# to create a comment block containing a line for
# each column. The line contains the column name,
# the type (and length), and any optional attributes
- def get_schema_info(klass, header, options = {})
+ def get_schema_info(klass, header, options = {}) # rubocop:disable Metrics/MethodLength
info = "# #{header}\n"
info << get_schema_header_text(klass, options)
@@ -142,18 +146,37 @@ def get_schema_info(klass, header, options = {})
if options[:format_markdown]
info << sprintf( "# %-#{max_size + md_names_overhead}.#{max_size + md_names_overhead}s | %-#{md_type_allowance}.#{md_type_allowance}s | %s\n", 'Name', 'Type', 'Attributes' )
+
info << "# #{ '-' * ( max_size + md_names_overhead ) } | #{'-' * md_type_allowance} | #{ '-' * 27 }\n"
end
cols = columns(klass, options)
- cols.each do |col|
+ with_comments = with_comments?(klass, options)
+ with_comments_column = with_comments_column?(klass, options)
+
+ # Precalculate Values
+ cols_meta = cols.map do |col|
+ col_comment = with_comments || with_comments_column ? col.comment&.gsub(/\n/, "\\n") : nil
col_type = get_col_type(col)
attrs = get_attributes(col, col_type, klass, options)
- col_name = if with_comments?(klass, options) && col.comment
- "#{col.name}(#{col.comment.gsub(/\n/, "\\n")})"
+ col_name = if with_comments && col_comment
+ "#{col.name}(#{col_comment})"
else
col.name
end
+ simple_formatted_attrs = attrs.join(", ")
+ [col.name, { col_type: col_type, attrs: attrs, col_name: col_name, simple_formatted_attrs: simple_formatted_attrs, col_comment: col_comment }]
+ end.to_h
+
+ # Output annotation
+ bare_max_attrs_length = cols_meta.map { |_, m| m[:simple_formatted_attrs].length }.max
+
+ cols.each do |col|
+ col_type = cols_meta[col.name][:col_type]
+ attrs = cols_meta[col.name][:attrs]
+ col_name = cols_meta[col.name][:col_name]
+ simple_formatted_attrs = cols_meta[col.name][:simple_formatted_attrs]
+ col_comment = cols_meta[col.name][:col_comment]
if options[:format_rdoc]
info << sprintf("# %-#{max_size}.#{max_size}s%s", "*#{col_name}*::", attrs.unshift(col_type).join(", ")).rstrip + "\n"
@@ -165,8 +188,10 @@ def get_schema_info(klass, header, options = {})
name_remainder = max_size - col_name.length - non_ascii_length(col_name)
type_remainder = (md_type_allowance - 2) - col_type.length
info << (sprintf("# **`%s`**%#{name_remainder}s | `%s`%#{type_remainder}s | `%s`", col_name, " ", col_type, " ", attrs.join(", ").rstrip)).gsub('``', ' ').rstrip + "\n"
+ elsif with_comments_column
+ info << format_default(col_name, max_size, col_type, bare_type_allowance, simple_formatted_attrs, bare_max_attrs_length, col_comment)
else
- info << format_default(col_name, max_size, col_type, bare_type_allowance, attrs)
+ info << format_default(col_name, max_size, col_type, bare_type_allowance, simple_formatted_attrs)
end
end
@@ -178,6 +203,10 @@ def get_schema_info(klass, header, options = {})
info << get_foreign_key_info(klass, options)
end
+ if options[:show_check_constraints] && klass.table_exists?
+ info << get_check_constraint_info(klass, options)
+ end
+
info << get_schema_footer_text(klass, options)
end
@@ -231,7 +260,7 @@ def get_col_type(col)
'bigint'
else
(col.type || col.sql_type).to_s
- end
+ end.dup
end
def index_columns_info(index)
@@ -352,6 +381,35 @@ def get_foreign_key_info(klass, options = {})
fk_info
end
+ def get_check_constraint_info(klass, options = {})
+ cc_info = if options[:format_markdown]
+ "#\n# ### Check Constraints\n#\n"
+ else
+ "#\n# Check Constraints\n#\n"
+ end
+
+ return '' unless klass.connection.respond_to?(:supports_check_constraints?) &&
+ klass.connection.supports_check_constraints? && klass.connection.respond_to?(:check_constraints)
+
+ check_constraints = klass.connection.check_constraints(klass.table_name)
+ return '' if check_constraints.empty?
+
+ max_size = check_constraints.map { |check_constraint| check_constraint.name.size }.max + 1
+ check_constraints.sort_by(&:name).each do |check_constraint|
+ expression = check_constraint.expression ? "(#{check_constraint.expression.squish})" : nil
+
+ cc_info << if options[:format_markdown]
+ cc_info_markdown = sprintf("# * `%s`", check_constraint.name)
+ cc_info_markdown << sprintf(": `%s`", expression) if expression
+ cc_info_markdown << "\n"
+ else
+ sprintf("# %-#{max_size}.#{max_size}s %s", check_constraint.name, expression).rstrip + "\n"
+ end
+ end
+
+ cc_info
+ end
+
# Add a schema block to a file. If the file already contains
# a schema info block (a comment starting with "== Schema Information"),
# check if it matches the block that is already there. If so, leave it be.
@@ -761,6 +819,12 @@ def with_comments?(klass, options)
klass.columns.any? { |col| !col.comment.nil? }
end
+ def with_comments_column?(klass, options)
+ options[:with_comment_column] &&
+ klass.columns.first.respond_to?(:comment) &&
+ klass.columns.any? { |col| !col.comment.nil? }
+ end
+
def max_schema_info_width(klass, options)
cols = columns(klass, options)
@@ -777,8 +841,15 @@ def max_schema_info_width(klass, options)
max_size
end
- def format_default(col_name, max_size, col_type, bare_type_allowance, attrs)
- sprintf("# %s:%s %s", mb_chars_ljust(col_name, max_size), mb_chars_ljust(col_type, bare_type_allowance), attrs.join(", ")).rstrip + "\n"
+ # rubocop:disable Metrics/ParameterLists
+ def format_default(col_name, max_size, col_type, bare_type_allowance, simple_formatted_attrs, bare_max_attrs_length = 0, col_comment = nil)
+ sprintf(
+ "# %s:%s %s %s",
+ mb_chars_ljust(col_name, max_size),
+ mb_chars_ljust(col_type, bare_type_allowance),
+ mb_chars_ljust(simple_formatted_attrs, bare_max_attrs_length),
+ col_comment
+ ).rstrip + "\n"
end
def width(string)
diff --git a/lib/annotate/annotate_routes.rb b/lib/annotate/annotate_routes.rb
index 75cc421ed..c9a2218ac 100644
--- a/lib/annotate/annotate_routes.rb
+++ b/lib/annotate/annotate_routes.rb
@@ -29,8 +29,7 @@ def do_annotations(options = {})
content, header_position = Helpers.strip_annotations(existing_text)
new_content = annotate_routes(HeaderGenerator.generate(options), content, header_position, options)
new_text = new_content.join("\n")
-
- if rewrite_contents(existing_text, new_text)
+ if rewrite_contents(existing_text, new_text, options[:frozen])
puts "#{routes_file} was annotated."
else
puts "#{routes_file} was not changed."
@@ -40,13 +39,13 @@ def do_annotations(options = {})
end
end
- def remove_annotations(_options={})
+ def remove_annotations(options={})
if routes_file_exist?
existing_text = File.read(routes_file)
content, header_position = Helpers.strip_annotations(existing_text)
new_content = strip_on_removal(content, header_position)
new_text = new_content.join("\n")
- if rewrite_contents(existing_text, new_text)
+ if rewrite_contents(existing_text, new_text, options[:frozen])
puts "Annotations were removed from #{routes_file}."
else
puts "#{routes_file} was not changed (Annotation did not exist)."
@@ -82,13 +81,15 @@ def strip_on_removal(content, header_position)
content
end
- def rewrite_contents(existing_text, new_text)
- if existing_text == new_text
- false
- else
+ def rewrite_contents(existing_text, new_text, frozen)
+ content_changed = (existing_text != new_text)
+
+ if content_changed
+ abort "annotate error. #{routes_file} needs to be updated, but annotate was run with `--frozen`." if frozen
File.open(routes_file, 'wb') { |f| f.puts(new_text) }
- true
end
+
+ content_changed
end
def annotate_routes(header, content, header_position, options = {})
diff --git a/lib/annotate/constants.rb b/lib/annotate/constants.rb
index cd2148f39..0d3225659 100644
--- a/lib/annotate/constants.rb
+++ b/lib/annotate/constants.rb
@@ -18,7 +18,8 @@ module Constants
:trace, :timestamp, :exclude_serializers, :classified_sort,
:show_foreign_keys, :show_complete_foreign_keys,
:exclude_scaffolds, :exclude_controllers, :exclude_helpers,
- :exclude_sti_subclasses, :ignore_unknown_models, :with_comment
+ :exclude_sti_subclasses, :ignore_unknown_models, :with_comment, :with_comment_column,
+ :show_check_constraints
].freeze
OTHER_OPTIONS = [
diff --git a/lib/annotate/parser.rb b/lib/annotate/parser.rb
index cb27b8b5d..ad85caf50 100644
--- a/lib/annotate/parser.rb
+++ b/lib/annotate/parser.rb
@@ -48,7 +48,7 @@ def commit
end
end
- def add_options_to_parser(option_parser) # rubocop:disable Metrics/MethodLength
+ def add_options_to_parser(option_parser) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
has_set_position = {}
option_parser.banner = 'Usage: annotate [options] [model_file]*'
@@ -173,6 +173,12 @@ def add_options_to_parser(option_parser) # rubocop:disable Metrics/MethodLength
env['include_version'] = 'yes'
end
+ option_parser.on('-c',
+ '--show-check-constraints',
+ "List the table's check constraints in the annotation") do
+ env['show_check_constraints'] = 'yes'
+ end
+
option_parser.on('-k',
'--show-foreign-keys',
"List the table's foreign key constraints in the annotation") do
@@ -298,6 +304,11 @@ def add_options_to_parser(option_parser) # rubocop:disable Metrics/MethodLength
"include database comments in model annotations") do
env['with_comment'] = 'true'
end
+
+ option_parser.on('--with-comment-column',
+ "include database comments in model annotations, as its own column, after all others") do
+ env['with_comment_column'] = 'true'
+ end
end
end
end
diff --git a/lib/generators/annotate/templates/auto_annotate_models.rake b/lib/generators/annotate/templates/auto_annotate_models.rake
index 1f355249b..61cdcd7a1 100644
--- a/lib/generators/annotate/templates/auto_annotate_models.rake
+++ b/lib/generators/annotate/templates/auto_annotate_models.rake
@@ -17,6 +17,7 @@ if Rails.env.development?
'position_in_fixture' => 'before',
'position_in_factory' => 'before',
'position_in_serializer' => 'before',
+ 'show_check_constraints' => 'false',
'show_foreign_keys' => 'true',
'show_complete_foreign_keys' => 'false',
'show_indexes' => 'true',
@@ -51,7 +52,8 @@ if Rails.env.development?
'trace' => 'false',
'wrapper_open' => nil,
'wrapper_close' => nil,
- 'with_comment' => 'true'
+ 'with_comment' => 'true',
+ 'with_comment_column' => 'false'
)
end
diff --git a/lib/tasks/annotate_models.rake b/lib/tasks/annotate_models.rake
index 76d8cfe63..776f97ba3 100644
--- a/lib/tasks/annotate_models.rake
+++ b/lib/tasks/annotate_models.rake
@@ -18,6 +18,7 @@ task annotate_models: :environment do
options[:position_in_factory] = Annotate::Helpers.fallback(ENV['position_in_factory'], ENV['position'])
options[:position_in_test] = Annotate::Helpers.fallback(ENV['position_in_test'], ENV['position'])
options[:position_in_serializer] = Annotate::Helpers.fallback(ENV['position_in_serializer'], ENV['position'])
+ options[:show_check_constraints] = Annotate::Helpers.true?(ENV['show_check_constraints'])
options[:show_foreign_keys] = Annotate::Helpers.true?(ENV['show_foreign_keys'])
options[:show_complete_foreign_keys] = Annotate::Helpers.true?(ENV['show_complete_foreign_keys'])
options[:show_indexes] = Annotate::Helpers.true?(ENV['show_indexes'])
@@ -51,6 +52,7 @@ task annotate_models: :environment do
options[:hide_limit_column_types] = Annotate::Helpers.fallback(ENV['hide_limit_column_types'], '')
options[:hide_default_column_types] = Annotate::Helpers.fallback(ENV['hide_default_column_types'], '')
options[:with_comment] = Annotate::Helpers.true?(ENV['with_comment'])
+ options[:with_comment_column] = Annotate::Helpers.true?(ENV['with_comment_column'])
options[:ignore_unknown_models] = Annotate::Helpers.true?(ENV.fetch('ignore_unknown_models', 'false'))
AnnotateModels.do_annotations(options)
diff --git a/lib/tasks/annotate_routes.rake b/lib/tasks/annotate_routes.rake
index ae6829337..b2832d443 100644
--- a/lib/tasks/annotate_routes.rake
+++ b/lib/tasks/annotate_routes.rake
@@ -14,6 +14,7 @@ task :annotate_routes => :environment do
options[:position_in_routes] = Annotate::Helpers.fallback(ENV['position_in_routes'], ENV['position'])
options[:ignore_routes] = Annotate::Helpers.fallback(ENV['ignore_routes'], nil)
options[:require] = ENV['require'] ? ENV['require'].split(',') : []
+ options[:frozen] = Annotate::Helpers.true?(ENV['frozen'])
options[:wrapper_open] = Annotate::Helpers.fallback(ENV['wrapper_open'], ENV['wrapper'])
options[:wrapper_close] = Annotate::Helpers.fallback(ENV['wrapper_close'], ENV['wrapper'])
AnnotateRoutes.do_annotations(options)
diff --git a/spec/integration/integration_helper.rb b/spec/integration/integration_helper.rb
deleted file mode 100644
index 79ce49a50..000000000
--- a/spec/integration/integration_helper.rb
+++ /dev/null
@@ -1,27 +0,0 @@
-class IntegrationHelper
- MIN_RUBY_VERSIONS = {
- 'rails_5.2.4.1' => '>= 2.2.2',
- 'rails_6.0.2.1' => '>= 2.5.0'
- }.freeze
-
- def self.able_to_run?(file_path, ruby_version)
- return false unless ENV['INTEGRATION_TESTS']
-
- file_name = File.basename(file_path)
- rails_app = File.basename(file_name, '_spec.rb')
- ruby_dependency = MIN_RUBY_VERSIONS[rails_app]
-
- required_version = Gem::Dependency.new('', ruby_dependency)
- able_to_run = required_version.match?('', ruby_version)
-
- unless able_to_run
- output = "\n" \
- "Skipping running the integration test for #{file_name}.\n" \
- "The current version of Ruby is #{ruby_version}, " \
- "but the integration test requires Ruby #{ruby_dependency}."
- puts output
- end
-
- able_to_run
- end
-end
diff --git a/spec/integration/rails_5.2.4.1/.gitignore b/spec/integration/rails_5.2.4.1/.gitignore
deleted file mode 100644
index 81452db92..000000000
--- a/spec/integration/rails_5.2.4.1/.gitignore
+++ /dev/null
@@ -1,31 +0,0 @@
-# See https://help.github.com/articles/ignoring-files for more about ignoring files.
-#
-# If you find yourself ignoring temporary files generated by your text editor
-# or operating system, you probably want to add a global ignore instead:
-# git config --global core.excludesfile '~/.gitignore_global'
-
-# Ignore bundler config.
-/.bundle
-
-# Ignore the default SQLite database.
-/db/*.sqlite3
-/db/*.sqlite3-journal
-
-# Ignore all logfiles and tempfiles.
-/log/*
-/tmp/*
-!/log/.keep
-!/tmp/.keep
-
-# Ignore uploaded files in development
-/storage/*
-!/storage/.keep
-
-/node_modules
-/yarn-error.log
-
-/public/assets
-.byebug_history
-
-# Ignore master key for decrypting credentials and more.
-/config/master.key
diff --git a/spec/integration/rails_5.2.4.1/Gemfile b/spec/integration/rails_5.2.4.1/Gemfile
deleted file mode 100644
index db73e4e13..000000000
--- a/spec/integration/rails_5.2.4.1/Gemfile
+++ /dev/null
@@ -1,59 +0,0 @@
-source 'https://rubygems.org'
-git_source(:github) { |repo| "https://github.com/#{repo}.git" }
-
-# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
-gem 'rails', '~> 5.2.4', '>= 5.2.4.1'
-# Use sqlite3 as the database for Active Record
-gem 'sqlite3'
-# Use Puma as the app server
-gem 'puma', '~> 5.6'
-# Use SCSS for stylesheets
-gem 'sass-rails', '~> 5.0'
-# Use Uglifier as compressor for JavaScript assets
-gem 'uglifier', '>= 1.3.0'
-# See https://github.com/rails/execjs#readme for more supported runtimes
-# gem 'mini_racer', platforms: :ruby
-
-# Use CoffeeScript for .coffee assets and views
-gem 'coffee-rails', '~> 4.2'
-# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
-gem 'turbolinks', '~> 5'
-# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
-gem 'jbuilder', '~> 2.5'
-# Use Redis adapter to run Action Cable in production
-# gem 'redis', '~> 4.0'
-# Use ActiveModel has_secure_password
-# gem 'bcrypt', '~> 3.1.7'
-
-# Use ActiveStorage variant
-# gem 'mini_magick', '~> 4.8'
-
-# Use Capistrano for deployment
-# gem 'capistrano-rails', group: :development
-
-# Reduces boot times through caching; required in config/boot.rb
-gem 'bootsnap', '>= 1.1.0', require: false
-
-group :development, :test do
- # Call 'byebug' anywhere in the code to stop execution and get a debugger console
- gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
-end
-
-group :development do
- gem 'annotate', path: '../../..'
-
- # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
- gem 'web-console', '>= 3.3.0'
- gem 'listen', '>= 3.0.5', '< 3.2'
-end
-
-group :test do
- # Adds support for Capybara system testing and selenium driver
- gem 'capybara', '>= 2.15'
- gem 'selenium-webdriver'
- # Easy installation and use of chromedriver to run system tests with Chrome
- gem 'chromedriver-helper'
-end
-
-# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
-gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
diff --git a/spec/integration/rails_5.2.4.1/Gemfile.lock b/spec/integration/rails_5.2.4.1/Gemfile.lock
deleted file mode 100644
index d8f28a0fa..000000000
--- a/spec/integration/rails_5.2.4.1/Gemfile.lock
+++ /dev/null
@@ -1,214 +0,0 @@
-PATH
- remote: ../../..
- specs:
- annotate (3.1.1)
- activerecord (>= 3.2, < 8.0)
- rake (>= 10.4, < 14.0)
-
-GEM
- remote: https://rubygems.org/
- specs:
- actioncable (5.2.5)
- actionpack (= 5.2.5)
- nio4r (~> 2.0)
- websocket-driver (>= 0.6.1)
- actionmailer (5.2.5)
- actionpack (= 5.2.5)
- actionview (= 5.2.5)
- activejob (= 5.2.5)
- mail (~> 2.5, >= 2.5.4)
- rails-dom-testing (~> 2.0)
- actionpack (5.2.5)
- actionview (= 5.2.5)
- activesupport (= 5.2.5)
- rack (~> 2.0, >= 2.0.8)
- rack-test (>= 0.6.3)
- rails-dom-testing (~> 2.0)
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
- actionview (5.2.5)
- activesupport (= 5.2.5)
- builder (~> 3.1)
- erubi (~> 1.4)
- rails-dom-testing (~> 2.0)
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
- activejob (5.2.5)
- activesupport (= 5.2.5)
- globalid (>= 0.3.6)
- activemodel (5.2.5)
- activesupport (= 5.2.5)
- activerecord (5.2.5)
- activemodel (= 5.2.5)
- activesupport (= 5.2.5)
- arel (>= 9.0)
- activestorage (5.2.5)
- actionpack (= 5.2.5)
- activerecord (= 5.2.5)
- marcel (~> 1.0.0)
- activesupport (5.2.5)
- concurrent-ruby (~> 1.0, >= 1.0.2)
- i18n (>= 0.7, < 2)
- minitest (~> 5.1)
- tzinfo (~> 1.1)
- addressable (2.7.0)
- public_suffix (>= 2.0.2, < 5.0)
- archive-zip (0.12.0)
- io-like (~> 0.3.0)
- arel (9.0.0)
- bindex (0.8.1)
- bootsnap (1.7.3)
- msgpack (~> 1.0)
- builder (3.2.4)
- byebug (11.1.3)
- capybara (3.32.2)
- addressable
- mini_mime (>= 0.1.3)
- nokogiri (~> 1.8)
- rack (>= 1.6.0)
- rack-test (>= 0.6.3)
- regexp_parser (~> 1.5)
- xpath (~> 3.2)
- childprocess (3.0.0)
- chromedriver-helper (2.1.1)
- archive-zip (~> 0.10)
- nokogiri (~> 1.8)
- coffee-rails (4.2.2)
- coffee-script (>= 2.2.0)
- railties (>= 4.0.0)
- coffee-script (2.4.1)
- coffee-script-source
- execjs
- coffee-script-source (1.12.2)
- concurrent-ruby (1.1.8)
- crass (1.0.6)
- erubi (1.10.0)
- execjs (2.7.0)
- ffi (1.15.0)
- globalid (0.4.2)
- activesupport (>= 4.2.0)
- i18n (1.8.10)
- concurrent-ruby (~> 1.0)
- io-like (0.3.1)
- jbuilder (2.11.2)
- activesupport (>= 5.0.0)
- listen (3.1.5)
- rb-fsevent (~> 0.9, >= 0.9.4)
- rb-inotify (~> 0.9, >= 0.9.7)
- ruby_dep (~> 1.2)
- loofah (2.9.0)
- crass (~> 1.0.2)
- nokogiri (>= 1.5.9)
- mail (2.7.1)
- mini_mime (>= 0.1.1)
- marcel (1.0.1)
- method_source (1.0.0)
- mini_mime (1.0.3)
- mini_portile2 (2.4.0)
- minitest (5.14.4)
- msgpack (1.4.2)
- nio4r (2.5.8)
- nokogiri (1.10.10)
- mini_portile2 (~> 2.4.0)
- public_suffix (4.0.6)
- puma (5.6.1)
- nio4r (~> 2.0)
- rack (2.2.3)
- rack-test (1.1.0)
- rack (>= 1.0, < 3)
- rails (5.2.5)
- actioncable (= 5.2.5)
- actionmailer (= 5.2.5)
- actionpack (= 5.2.5)
- actionview (= 5.2.5)
- activejob (= 5.2.5)
- activemodel (= 5.2.5)
- activerecord (= 5.2.5)
- activestorage (= 5.2.5)
- activesupport (= 5.2.5)
- bundler (>= 1.3.0)
- railties (= 5.2.5)
- sprockets-rails (>= 2.0.0)
- rails-dom-testing (2.0.3)
- activesupport (>= 4.2.0)
- nokogiri (>= 1.6)
- rails-html-sanitizer (1.3.0)
- loofah (~> 2.3)
- railties (5.2.5)
- actionpack (= 5.2.5)
- activesupport (= 5.2.5)
- method_source
- rake (>= 0.8.7)
- thor (>= 0.19.0, < 2.0)
- rake (13.0.3)
- rb-fsevent (0.10.4)
- rb-inotify (0.10.1)
- ffi (~> 1.0)
- regexp_parser (1.8.2)
- ruby_dep (1.5.0)
- rubyzip (2.3.0)
- sass (3.7.4)
- sass-listen (~> 4.0.0)
- sass-listen (4.0.0)
- rb-fsevent (~> 0.9, >= 0.9.4)
- rb-inotify (~> 0.9, >= 0.9.7)
- sass-rails (5.1.0)
- railties (>= 5.2.0)
- sass (~> 3.1)
- sprockets (>= 2.8, < 4.0)
- sprockets-rails (>= 2.0, < 4.0)
- tilt (>= 1.1, < 3)
- selenium-webdriver (3.142.7)
- childprocess (>= 0.5, < 4.0)
- rubyzip (>= 1.2.2)
- sprockets (3.7.2)
- concurrent-ruby (~> 1.0)
- rack (> 1, < 3)
- sprockets-rails (3.2.2)
- actionpack (>= 4.0)
- activesupport (>= 4.0)
- sprockets (>= 3.0.0)
- sqlite3 (1.4.2)
- thor (1.1.0)
- thread_safe (0.3.6)
- tilt (2.0.10)
- turbolinks (5.2.1)
- turbolinks-source (~> 5.2)
- turbolinks-source (5.2.0)
- tzinfo (1.2.9)
- thread_safe (~> 0.1)
- uglifier (4.2.0)
- execjs (>= 0.3.0, < 3)
- web-console (3.7.0)
- actionview (>= 5.0)
- activemodel (>= 5.0)
- bindex (>= 0.4.0)
- railties (>= 5.0)
- websocket-driver (0.7.3)
- websocket-extensions (>= 0.1.0)
- websocket-extensions (0.1.5)
- xpath (3.2.0)
- nokogiri (~> 1.8)
-
-PLATFORMS
- ruby
-
-DEPENDENCIES
- annotate!
- bootsnap (>= 1.1.0)
- byebug
- capybara (>= 2.15)
- chromedriver-helper
- coffee-rails (~> 4.2)
- jbuilder (~> 2.5)
- listen (>= 3.0.5, < 3.2)
- puma (~> 5.6)
- rails (~> 5.2.4, >= 5.2.4.1)
- sass-rails (~> 5.0)
- selenium-webdriver
- sqlite3
- turbolinks (~> 5)
- tzinfo-data
- uglifier (>= 1.3.0)
- web-console (>= 3.3.0)
-
-BUNDLED WITH
- 2.2.15
diff --git a/spec/integration/rails_5.2.4.1/README.md b/spec/integration/rails_5.2.4.1/README.md
deleted file mode 100644
index 7db80e4ca..000000000
--- a/spec/integration/rails_5.2.4.1/README.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# README
-
-This README would normally document whatever steps are necessary to get the
-application up and running.
-
-Things you may want to cover:
-
-* Ruby version
-
-* System dependencies
-
-* Configuration
-
-* Database creation
-
-* Database initialization
-
-* How to run the test suite
-
-* Services (job queues, cache servers, search engines, etc.)
-
-* Deployment instructions
-
-* ...
diff --git a/spec/integration/rails_5.2.4.1/Rakefile b/spec/integration/rails_5.2.4.1/Rakefile
deleted file mode 100644
index e85f91391..000000000
--- a/spec/integration/rails_5.2.4.1/Rakefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# Add your own tasks in files placed in lib/tasks ending in .rake,
-# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
-
-require_relative 'config/application'
-
-Rails.application.load_tasks
diff --git a/spec/integration/rails_5.2.4.1/app/assets/config/manifest.js b/spec/integration/rails_5.2.4.1/app/assets/config/manifest.js
deleted file mode 100644
index b16e53d6d..000000000
--- a/spec/integration/rails_5.2.4.1/app/assets/config/manifest.js
+++ /dev/null
@@ -1,3 +0,0 @@
-//= link_tree ../images
-//= link_directory ../javascripts .js
-//= link_directory ../stylesheets .css
diff --git a/spec/integration/rails_5.2.4.1/app/assets/images/.keep b/spec/integration/rails_5.2.4.1/app/assets/images/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/app/assets/javascripts/application.js b/spec/integration/rails_5.2.4.1/app/assets/javascripts/application.js
deleted file mode 100644
index 82e6f0f6c..000000000
--- a/spec/integration/rails_5.2.4.1/app/assets/javascripts/application.js
+++ /dev/null
@@ -1,16 +0,0 @@
-// This is a manifest file that'll be compiled into application.js, which will include all the files
-// listed below.
-//
-// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's
-// vendor/assets/javascripts directory can be referenced here using a relative path.
-//
-// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
-// compiled file. JavaScript code in this file should be added after the last require_* statement.
-//
-// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
-// about supported directives.
-//
-//= require rails-ujs
-//= require activestorage
-//= require turbolinks
-//= require_tree .
diff --git a/spec/integration/rails_5.2.4.1/app/assets/javascripts/cable.js b/spec/integration/rails_5.2.4.1/app/assets/javascripts/cable.js
deleted file mode 100644
index 739aa5f02..000000000
--- a/spec/integration/rails_5.2.4.1/app/assets/javascripts/cable.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// Action Cable provides the framework to deal with WebSockets in Rails.
-// You can generate new channels where WebSocket features live using the `rails generate channel` command.
-//
-//= require action_cable
-//= require_self
-//= require_tree ./channels
-
-(function() {
- this.App || (this.App = {});
-
- App.cable = ActionCable.createConsumer();
-
-}).call(this);
diff --git a/spec/integration/rails_5.2.4.1/app/assets/javascripts/channels/.keep b/spec/integration/rails_5.2.4.1/app/assets/javascripts/channels/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/app/assets/stylesheets/application.css b/spec/integration/rails_5.2.4.1/app/assets/stylesheets/application.css
deleted file mode 100644
index d05ea0f51..000000000
--- a/spec/integration/rails_5.2.4.1/app/assets/stylesheets/application.css
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * This is a manifest file that'll be compiled into application.css, which will include all the files
- * listed below.
- *
- * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's
- * vendor/assets/stylesheets directory can be referenced here using a relative path.
- *
- * You're free to add application-wide styles to this file and they'll appear at the bottom of the
- * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
- * files in this directory. Styles in this file should be added after the last require_* statement.
- * It is generally better to create a new file per style scope.
- *
- *= require_tree .
- *= require_self
- */
diff --git a/spec/integration/rails_5.2.4.1/app/channels/application_cable/channel.rb b/spec/integration/rails_5.2.4.1/app/channels/application_cable/channel.rb
deleted file mode 100644
index d67269728..000000000
--- a/spec/integration/rails_5.2.4.1/app/channels/application_cable/channel.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-module ApplicationCable
- class Channel < ActionCable::Channel::Base
- end
-end
diff --git a/spec/integration/rails_5.2.4.1/app/channels/application_cable/connection.rb b/spec/integration/rails_5.2.4.1/app/channels/application_cable/connection.rb
deleted file mode 100644
index 0ff5442f4..000000000
--- a/spec/integration/rails_5.2.4.1/app/channels/application_cable/connection.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-module ApplicationCable
- class Connection < ActionCable::Connection::Base
- end
-end
diff --git a/spec/integration/rails_5.2.4.1/app/controllers/application_controller.rb b/spec/integration/rails_5.2.4.1/app/controllers/application_controller.rb
deleted file mode 100644
index 09705d12a..000000000
--- a/spec/integration/rails_5.2.4.1/app/controllers/application_controller.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-class ApplicationController < ActionController::Base
-end
diff --git a/spec/integration/rails_5.2.4.1/app/controllers/concerns/.keep b/spec/integration/rails_5.2.4.1/app/controllers/concerns/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/app/helpers/application_helper.rb b/spec/integration/rails_5.2.4.1/app/helpers/application_helper.rb
deleted file mode 100644
index de6be7945..000000000
--- a/spec/integration/rails_5.2.4.1/app/helpers/application_helper.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-module ApplicationHelper
-end
diff --git a/spec/integration/rails_5.2.4.1/app/jobs/application_job.rb b/spec/integration/rails_5.2.4.1/app/jobs/application_job.rb
deleted file mode 100644
index a009ace51..000000000
--- a/spec/integration/rails_5.2.4.1/app/jobs/application_job.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-class ApplicationJob < ActiveJob::Base
-end
diff --git a/spec/integration/rails_5.2.4.1/app/mailers/application_mailer.rb b/spec/integration/rails_5.2.4.1/app/mailers/application_mailer.rb
deleted file mode 100644
index 286b2239d..000000000
--- a/spec/integration/rails_5.2.4.1/app/mailers/application_mailer.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-class ApplicationMailer < ActionMailer::Base
- default from: 'from@example.com'
- layout 'mailer'
-end
diff --git a/spec/integration/rails_5.2.4.1/app/models/application_record.rb b/spec/integration/rails_5.2.4.1/app/models/application_record.rb
deleted file mode 100644
index 10a4cba84..000000000
--- a/spec/integration/rails_5.2.4.1/app/models/application_record.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-class ApplicationRecord < ActiveRecord::Base
- self.abstract_class = true
-end
diff --git a/spec/integration/rails_5.2.4.1/app/models/concerns/.keep b/spec/integration/rails_5.2.4.1/app/models/concerns/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/app/models/task.rb b/spec/integration/rails_5.2.4.1/app/models/task.rb
deleted file mode 100644
index 3c2342421..000000000
--- a/spec/integration/rails_5.2.4.1/app/models/task.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-class Task < ApplicationRecord
-end
diff --git a/spec/integration/rails_5.2.4.1/app/views/layouts/application.html.erb b/spec/integration/rails_5.2.4.1/app/views/layouts/application.html.erb
deleted file mode 100644
index 8255d055e..000000000
--- a/spec/integration/rails_5.2.4.1/app/views/layouts/application.html.erb
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
- Rails5241
- <%= csrf_meta_tags %>
- <%= csp_meta_tag %>
-
- <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
- <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
-
-
-
- <%= yield %>
-
-
diff --git a/spec/integration/rails_5.2.4.1/app/views/layouts/mailer.html.erb b/spec/integration/rails_5.2.4.1/app/views/layouts/mailer.html.erb
deleted file mode 100644
index cbd34d2e9..000000000
--- a/spec/integration/rails_5.2.4.1/app/views/layouts/mailer.html.erb
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
- <%= yield %>
-
-
diff --git a/spec/integration/rails_5.2.4.1/app/views/layouts/mailer.text.erb b/spec/integration/rails_5.2.4.1/app/views/layouts/mailer.text.erb
deleted file mode 100644
index 37f0bddbd..000000000
--- a/spec/integration/rails_5.2.4.1/app/views/layouts/mailer.text.erb
+++ /dev/null
@@ -1 +0,0 @@
-<%= yield %>
diff --git a/spec/integration/rails_5.2.4.1/bin/bundle b/spec/integration/rails_5.2.4.1/bin/bundle
deleted file mode 100755
index f19acf5b5..000000000
--- a/spec/integration/rails_5.2.4.1/bin/bundle
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/usr/bin/env ruby
-ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
-load Gem.bin_path('bundler', 'bundle')
diff --git a/spec/integration/rails_5.2.4.1/bin/rails b/spec/integration/rails_5.2.4.1/bin/rails
deleted file mode 100755
index 073966023..000000000
--- a/spec/integration/rails_5.2.4.1/bin/rails
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env ruby
-APP_PATH = File.expand_path('../config/application', __dir__)
-require_relative '../config/boot'
-require 'rails/commands'
diff --git a/spec/integration/rails_5.2.4.1/bin/rake b/spec/integration/rails_5.2.4.1/bin/rake
deleted file mode 100755
index 17240489f..000000000
--- a/spec/integration/rails_5.2.4.1/bin/rake
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env ruby
-require_relative '../config/boot'
-require 'rake'
-Rake.application.run
diff --git a/spec/integration/rails_5.2.4.1/bin/setup b/spec/integration/rails_5.2.4.1/bin/setup
deleted file mode 100755
index 94fd4d797..000000000
--- a/spec/integration/rails_5.2.4.1/bin/setup
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env ruby
-require 'fileutils'
-include FileUtils
-
-# path to your application root.
-APP_ROOT = File.expand_path('..', __dir__)
-
-def system!(*args)
- system(*args) || abort("\n== Command #{args} failed ==")
-end
-
-chdir APP_ROOT do
- # This script is a starting point to setup your application.
- # Add necessary setup steps to this file.
-
- puts '== Installing dependencies =='
- system! 'gem install bundler --conservative'
- system('bundle check') || system!('bundle install')
-
- # Install JavaScript dependencies if using Yarn
- # system('bin/yarn')
-
- # puts "\n== Copying sample files =="
- # unless File.exist?('config/database.yml')
- # cp 'config/database.yml.sample', 'config/database.yml'
- # end
-
- puts "\n== Preparing database =="
- system! 'bin/rails db:setup'
-
- puts "\n== Removing old logs and tempfiles =="
- system! 'bin/rails log:clear tmp:clear'
-
- puts "\n== Restarting application server =="
- system! 'bin/rails restart'
-end
diff --git a/spec/integration/rails_5.2.4.1/bin/update b/spec/integration/rails_5.2.4.1/bin/update
deleted file mode 100755
index 58bfaed51..000000000
--- a/spec/integration/rails_5.2.4.1/bin/update
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env ruby
-require 'fileutils'
-include FileUtils
-
-# path to your application root.
-APP_ROOT = File.expand_path('..', __dir__)
-
-def system!(*args)
- system(*args) || abort("\n== Command #{args} failed ==")
-end
-
-chdir APP_ROOT do
- # This script is a way to update your development environment automatically.
- # Add necessary update steps to this file.
-
- puts '== Installing dependencies =='
- system! 'gem install bundler --conservative'
- system('bundle check') || system!('bundle install')
-
- # Install JavaScript dependencies if using Yarn
- # system('bin/yarn')
-
- puts "\n== Updating database =="
- system! 'bin/rails db:migrate'
-
- puts "\n== Removing old logs and tempfiles =="
- system! 'bin/rails log:clear tmp:clear'
-
- puts "\n== Restarting application server =="
- system! 'bin/rails restart'
-end
diff --git a/spec/integration/rails_5.2.4.1/bin/yarn b/spec/integration/rails_5.2.4.1/bin/yarn
deleted file mode 100755
index 460dd565b..000000000
--- a/spec/integration/rails_5.2.4.1/bin/yarn
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/usr/bin/env ruby
-APP_ROOT = File.expand_path('..', __dir__)
-Dir.chdir(APP_ROOT) do
- begin
- exec "yarnpkg", *ARGV
- rescue Errno::ENOENT
- $stderr.puts "Yarn executable was not detected in the system."
- $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install"
- exit 1
- end
-end
diff --git a/spec/integration/rails_5.2.4.1/config.ru b/spec/integration/rails_5.2.4.1/config.ru
deleted file mode 100644
index f7ba0b527..000000000
--- a/spec/integration/rails_5.2.4.1/config.ru
+++ /dev/null
@@ -1,5 +0,0 @@
-# This file is used by Rack-based servers to start the application.
-
-require_relative 'config/environment'
-
-run Rails.application
diff --git a/spec/integration/rails_5.2.4.1/config/application.rb b/spec/integration/rails_5.2.4.1/config/application.rb
deleted file mode 100644
index a497104ac..000000000
--- a/spec/integration/rails_5.2.4.1/config/application.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require_relative 'boot'
-
-require 'rails/all'
-
-# Require the gems listed in Gemfile, including any gems
-# you've limited to :test, :development, or :production.
-Bundler.require(*Rails.groups)
-
-module Rails5241
- class Application < Rails::Application
- # Initialize configuration defaults for originally generated Rails version.
- config.load_defaults 5.2
-
- # Settings in config/environments/* take precedence over those specified here.
- # Application configuration can go into files in config/initializers
- # -- all .rb files in that directory are automatically loaded after loading
- # the framework and any gems in your application.
- end
-end
diff --git a/spec/integration/rails_5.2.4.1/config/boot.rb b/spec/integration/rails_5.2.4.1/config/boot.rb
deleted file mode 100644
index b9e460cef..000000000
--- a/spec/integration/rails_5.2.4.1/config/boot.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
-
-require 'bundler/setup' # Set up gems listed in the Gemfile.
-require 'bootsnap/setup' # Speed up boot time by caching expensive operations.
diff --git a/spec/integration/rails_5.2.4.1/config/cable.yml b/spec/integration/rails_5.2.4.1/config/cable.yml
deleted file mode 100644
index bbe9fb1e2..000000000
--- a/spec/integration/rails_5.2.4.1/config/cable.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-development:
- adapter: async
-
-test:
- adapter: async
-
-production:
- adapter: redis
- url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
- channel_prefix: rails_5_2_4_1_production
diff --git a/spec/integration/rails_5.2.4.1/config/credentials.yml.enc b/spec/integration/rails_5.2.4.1/config/credentials.yml.enc
deleted file mode 100644
index 2ef7ab8c7..000000000
--- a/spec/integration/rails_5.2.4.1/config/credentials.yml.enc
+++ /dev/null
@@ -1 +0,0 @@
-kaq24JvP21fLJw+1dPA4vJwDDrmXYkK9Z0eGm427byJIzbzyz4/iZOeOaMbmgPus3C1brzeGXrXvH/XObBtrktOftldHzYN9EjYIvip+Z38ep7kv5FhkL2OMlOAJCOkIv0xxyZld6pn6VR6QyJ8GmO/vJh1/k0AMpioQA4QPVi4AZyRxNNlO8UkQ4nidlYBjueoZDTbrKwDUNGwnCfSihDYzWsyNqQfEuvZDjd8UdpPUFDRVkG7TI4EVGfJD2TSmnbm2XCxrfRvSkWL5M7qJavBSJTJ2pUc4sZhmSlVjCBV1nuW+gvl5UC5yABmc2MwnftfwEplXObKdEHIR7y1EQ92KGqsgmoOZTnqEbEbN4jWDI14SS3DDoosu2mROI88R7rWCMjMDmjOlaVELYvzoXYW4hfNBvXvqbb2O--vdG9CDzyXc67QVYu--pSJBykeDMvvx3dUeH5L3ng==
\ No newline at end of file
diff --git a/spec/integration/rails_5.2.4.1/config/database.yml b/spec/integration/rails_5.2.4.1/config/database.yml
deleted file mode 100644
index 0d02f2498..000000000
--- a/spec/integration/rails_5.2.4.1/config/database.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-# SQLite version 3.x
-# gem install sqlite3
-#
-# Ensure the SQLite 3 gem is defined in your Gemfile
-# gem 'sqlite3'
-#
-default: &default
- adapter: sqlite3
- pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
- timeout: 5000
-
-development:
- <<: *default
- database: db/development.sqlite3
-
-# Warning: The database defined as "test" will be erased and
-# re-generated from your development database when you run "rake".
-# Do not set this db to the same as development or production.
-test:
- <<: *default
- database: db/test.sqlite3
-
-production:
- <<: *default
- database: db/production.sqlite3
diff --git a/spec/integration/rails_5.2.4.1/config/environment.rb b/spec/integration/rails_5.2.4.1/config/environment.rb
deleted file mode 100644
index 426333bb4..000000000
--- a/spec/integration/rails_5.2.4.1/config/environment.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# Load the Rails application.
-require_relative 'application'
-
-# Initialize the Rails application.
-Rails.application.initialize!
diff --git a/spec/integration/rails_5.2.4.1/config/environments/development.rb b/spec/integration/rails_5.2.4.1/config/environments/development.rb
deleted file mode 100644
index 1311e3e4e..000000000
--- a/spec/integration/rails_5.2.4.1/config/environments/development.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-Rails.application.configure do
- # Settings specified here will take precedence over those in config/application.rb.
-
- # In the development environment your application's code is reloaded on
- # every request. This slows down response time but is perfect for development
- # since you don't have to restart the web server when you make code changes.
- config.cache_classes = false
-
- # Do not eager load code on boot.
- config.eager_load = false
-
- # Show full error reports.
- config.consider_all_requests_local = true
-
- # Enable/disable caching. By default caching is disabled.
- # Run rails dev:cache to toggle caching.
- if Rails.root.join('tmp', 'caching-dev.txt').exist?
- config.action_controller.perform_caching = true
-
- config.cache_store = :memory_store
- config.public_file_server.headers = {
- 'Cache-Control' => "public, max-age=#{2.days.to_i}"
- }
- else
- config.action_controller.perform_caching = false
-
- config.cache_store = :null_store
- end
-
- # Store uploaded files on the local file system (see config/storage.yml for options)
- config.active_storage.service = :local
-
- # Don't care if the mailer can't send.
- config.action_mailer.raise_delivery_errors = false
-
- config.action_mailer.perform_caching = false
-
- # Print deprecation notices to the Rails logger.
- config.active_support.deprecation = :log
-
- # Raise an error on page load if there are pending migrations.
- config.active_record.migration_error = :page_load
-
- # Highlight code that triggered database queries in logs.
- config.active_record.verbose_query_logs = true
-
- # Debug mode disables concatenation and preprocessing of assets.
- # This option may cause significant delays in view rendering with a large
- # number of complex assets.
- config.assets.debug = true
-
- # Suppress logger output for asset requests.
- config.assets.quiet = true
-
- # Raises error for missing translations
- # config.action_view.raise_on_missing_translations = true
-
- # Use an evented file watcher to asynchronously detect changes in source code,
- # routes, locales, etc. This feature depends on the listen gem.
- config.file_watcher = ActiveSupport::EventedFileUpdateChecker
-end
diff --git a/spec/integration/rails_5.2.4.1/config/environments/production.rb b/spec/integration/rails_5.2.4.1/config/environments/production.rb
deleted file mode 100644
index 431c8ee69..000000000
--- a/spec/integration/rails_5.2.4.1/config/environments/production.rb
+++ /dev/null
@@ -1,94 +0,0 @@
-Rails.application.configure do
- # Settings specified here will take precedence over those in config/application.rb.
-
- # Code is not reloaded between requests.
- config.cache_classes = true
-
- # Eager load code on boot. This eager loads most of Rails and
- # your application in memory, allowing both threaded web servers
- # and those relying on copy on write to perform better.
- # Rake tasks automatically ignore this option for performance.
- config.eager_load = true
-
- # Full error reports are disabled and caching is turned on.
- config.consider_all_requests_local = false
- config.action_controller.perform_caching = true
-
- # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
- # or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
- # config.require_master_key = true
-
- # Disable serving static files from the `/public` folder by default since
- # Apache or NGINX already handles this.
- config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
-
- # Compress JavaScripts and CSS.
- config.assets.js_compressor = :uglifier
- # config.assets.css_compressor = :sass
-
- # Do not fallback to assets pipeline if a precompiled asset is missed.
- config.assets.compile = false
-
- # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
-
- # Enable serving of images, stylesheets, and JavaScripts from an asset server.
- # config.action_controller.asset_host = 'http://assets.example.com'
-
- # Specifies the header that your server uses for sending files.
- # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
- # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
-
- # Store uploaded files on the local file system (see config/storage.yml for options)
- config.active_storage.service = :local
-
- # Mount Action Cable outside main process or domain
- # config.action_cable.mount_path = nil
- # config.action_cable.url = 'wss://example.com/cable'
- # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
-
- # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
- # config.force_ssl = true
-
- # Use the lowest log level to ensure availability of diagnostic information
- # when problems arise.
- config.log_level = :debug
-
- # Prepend all log lines with the following tags.
- config.log_tags = [ :request_id ]
-
- # Use a different cache store in production.
- # config.cache_store = :mem_cache_store
-
- # Use a real queuing backend for Active Job (and separate queues per environment)
- # config.active_job.queue_adapter = :resque
- # config.active_job.queue_name_prefix = "rails_5_2_4_1_#{Rails.env}"
-
- config.action_mailer.perform_caching = false
-
- # Ignore bad email addresses and do not raise email delivery errors.
- # Set this to true and configure the email server for immediate delivery to raise delivery errors.
- # config.action_mailer.raise_delivery_errors = false
-
- # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
- # the I18n.default_locale when a translation cannot be found).
- config.i18n.fallbacks = true
-
- # Send deprecation notices to registered listeners.
- config.active_support.deprecation = :notify
-
- # Use default logging formatter so that PID and timestamp are not suppressed.
- config.log_formatter = ::Logger::Formatter.new
-
- # Use a different logger for distributed setups.
- # require 'syslog/logger'
- # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
-
- if ENV["RAILS_LOG_TO_STDOUT"].present?
- logger = ActiveSupport::Logger.new(STDOUT)
- logger.formatter = config.log_formatter
- config.logger = ActiveSupport::TaggedLogging.new(logger)
- end
-
- # Do not dump schema after migrations.
- config.active_record.dump_schema_after_migration = false
-end
diff --git a/spec/integration/rails_5.2.4.1/config/environments/test.rb b/spec/integration/rails_5.2.4.1/config/environments/test.rb
deleted file mode 100644
index 0a38fd3ce..000000000
--- a/spec/integration/rails_5.2.4.1/config/environments/test.rb
+++ /dev/null
@@ -1,46 +0,0 @@
-Rails.application.configure do
- # Settings specified here will take precedence over those in config/application.rb.
-
- # The test environment is used exclusively to run your application's
- # test suite. You never need to work with it otherwise. Remember that
- # your test database is "scratch space" for the test suite and is wiped
- # and recreated between test runs. Don't rely on the data there!
- config.cache_classes = true
-
- # Do not eager load code on boot. This avoids loading your whole application
- # just for the purpose of running a single test. If you are using a tool that
- # preloads Rails for running tests, you may have to set it to true.
- config.eager_load = false
-
- # Configure public file server for tests with Cache-Control for performance.
- config.public_file_server.enabled = true
- config.public_file_server.headers = {
- 'Cache-Control' => "public, max-age=#{1.hour.to_i}"
- }
-
- # Show full error reports and disable caching.
- config.consider_all_requests_local = true
- config.action_controller.perform_caching = false
-
- # Raise exceptions instead of rendering exception templates.
- config.action_dispatch.show_exceptions = false
-
- # Disable request forgery protection in test environment.
- config.action_controller.allow_forgery_protection = false
-
- # Store uploaded files on the local file system in a temporary directory
- config.active_storage.service = :test
-
- config.action_mailer.perform_caching = false
-
- # Tell Action Mailer not to deliver emails to the real world.
- # The :test delivery method accumulates sent emails in the
- # ActionMailer::Base.deliveries array.
- config.action_mailer.delivery_method = :test
-
- # Print deprecation notices to the stderr.
- config.active_support.deprecation = :stderr
-
- # Raises error for missing translations
- # config.action_view.raise_on_missing_translations = true
-end
diff --git a/spec/integration/rails_5.2.4.1/config/initializers/application_controller_renderer.rb b/spec/integration/rails_5.2.4.1/config/initializers/application_controller_renderer.rb
deleted file mode 100644
index 89d2efab2..000000000
--- a/spec/integration/rails_5.2.4.1/config/initializers/application_controller_renderer.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# ActiveSupport::Reloader.to_prepare do
-# ApplicationController.renderer.defaults.merge!(
-# http_host: 'example.org',
-# https: false
-# )
-# end
diff --git a/spec/integration/rails_5.2.4.1/config/initializers/assets.rb b/spec/integration/rails_5.2.4.1/config/initializers/assets.rb
deleted file mode 100644
index 4b828e80c..000000000
--- a/spec/integration/rails_5.2.4.1/config/initializers/assets.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Version of your assets, change this if you want to expire all your assets.
-Rails.application.config.assets.version = '1.0'
-
-# Add additional assets to the asset load path.
-# Rails.application.config.assets.paths << Emoji.images_path
-# Add Yarn node_modules folder to the asset load path.
-Rails.application.config.assets.paths << Rails.root.join('node_modules')
-
-# Precompile additional assets.
-# application.js, application.css, and all non-JS/CSS in the app/assets
-# folder are already added.
-# Rails.application.config.assets.precompile += %w( admin.js admin.css )
diff --git a/spec/integration/rails_5.2.4.1/config/initializers/backtrace_silencers.rb b/spec/integration/rails_5.2.4.1/config/initializers/backtrace_silencers.rb
deleted file mode 100644
index 59385cdf3..000000000
--- a/spec/integration/rails_5.2.4.1/config/initializers/backtrace_silencers.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
-# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
-
-# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
-# Rails.backtrace_cleaner.remove_silencers!
diff --git a/spec/integration/rails_5.2.4.1/config/initializers/content_security_policy.rb b/spec/integration/rails_5.2.4.1/config/initializers/content_security_policy.rb
deleted file mode 100644
index d3bcaa5ec..000000000
--- a/spec/integration/rails_5.2.4.1/config/initializers/content_security_policy.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Define an application-wide content security policy
-# For further information see the following documentation
-# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
-
-# Rails.application.config.content_security_policy do |policy|
-# policy.default_src :self, :https
-# policy.font_src :self, :https, :data
-# policy.img_src :self, :https, :data
-# policy.object_src :none
-# policy.script_src :self, :https
-# policy.style_src :self, :https
-
-# # Specify URI for violation reports
-# # policy.report_uri "/csp-violation-report-endpoint"
-# end
-
-# If you are using UJS then enable automatic nonce generation
-# Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) }
-
-# Report CSP violations to a specified URI
-# For further information see the following documentation:
-# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
-# Rails.application.config.content_security_policy_report_only = true
diff --git a/spec/integration/rails_5.2.4.1/config/initializers/cookies_serializer.rb b/spec/integration/rails_5.2.4.1/config/initializers/cookies_serializer.rb
deleted file mode 100644
index 5a6a32d37..000000000
--- a/spec/integration/rails_5.2.4.1/config/initializers/cookies_serializer.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Specify a serializer for the signed and encrypted cookie jars.
-# Valid options are :json, :marshal, and :hybrid.
-Rails.application.config.action_dispatch.cookies_serializer = :json
diff --git a/spec/integration/rails_5.2.4.1/config/initializers/filter_parameter_logging.rb b/spec/integration/rails_5.2.4.1/config/initializers/filter_parameter_logging.rb
deleted file mode 100644
index 4a994e1e7..000000000
--- a/spec/integration/rails_5.2.4.1/config/initializers/filter_parameter_logging.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Configure sensitive parameters which will be filtered from the log file.
-Rails.application.config.filter_parameters += [:password]
diff --git a/spec/integration/rails_5.2.4.1/config/initializers/inflections.rb b/spec/integration/rails_5.2.4.1/config/initializers/inflections.rb
deleted file mode 100644
index ac033bf9d..000000000
--- a/spec/integration/rails_5.2.4.1/config/initializers/inflections.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Add new inflection rules using the following format. Inflections
-# are locale specific, and you may define rules for as many different
-# locales as you wish. All of these examples are active by default:
-# ActiveSupport::Inflector.inflections(:en) do |inflect|
-# inflect.plural /^(ox)$/i, '\1en'
-# inflect.singular /^(ox)en/i, '\1'
-# inflect.irregular 'person', 'people'
-# inflect.uncountable %w( fish sheep )
-# end
-
-# These inflection rules are supported but not enabled by default:
-# ActiveSupport::Inflector.inflections(:en) do |inflect|
-# inflect.acronym 'RESTful'
-# end
diff --git a/spec/integration/rails_5.2.4.1/config/initializers/mime_types.rb b/spec/integration/rails_5.2.4.1/config/initializers/mime_types.rb
deleted file mode 100644
index dc1899682..000000000
--- a/spec/integration/rails_5.2.4.1/config/initializers/mime_types.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Add new mime types for use in respond_to blocks:
-# Mime::Type.register "text/richtext", :rtf
diff --git a/spec/integration/rails_5.2.4.1/config/initializers/wrap_parameters.rb b/spec/integration/rails_5.2.4.1/config/initializers/wrap_parameters.rb
deleted file mode 100644
index bbfc3961b..000000000
--- a/spec/integration/rails_5.2.4.1/config/initializers/wrap_parameters.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# This file contains settings for ActionController::ParamsWrapper which
-# is enabled by default.
-
-# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
-ActiveSupport.on_load(:action_controller) do
- wrap_parameters format: [:json]
-end
-
-# To enable root element in JSON for ActiveRecord objects.
-# ActiveSupport.on_load(:active_record) do
-# self.include_root_in_json = true
-# end
diff --git a/spec/integration/rails_5.2.4.1/config/locales/en.yml b/spec/integration/rails_5.2.4.1/config/locales/en.yml
deleted file mode 100644
index decc5a857..000000000
--- a/spec/integration/rails_5.2.4.1/config/locales/en.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-# Files in the config/locales directory are used for internationalization
-# and are automatically loaded by Rails. If you want to use locales other
-# than English, add the necessary files in this directory.
-#
-# To use the locales, use `I18n.t`:
-#
-# I18n.t 'hello'
-#
-# In views, this is aliased to just `t`:
-#
-# <%= t('hello') %>
-#
-# To use a different locale, set it with `I18n.locale`:
-#
-# I18n.locale = :es
-#
-# This would use the information in config/locales/es.yml.
-#
-# The following keys must be escaped otherwise they will not be retrieved by
-# the default I18n backend:
-#
-# true, false, on, off, yes, no
-#
-# Instead, surround them with single quotes.
-#
-# en:
-# 'true': 'foo'
-#
-# To learn more, please read the Rails Internationalization guide
-# available at http://guides.rubyonrails.org/i18n.html.
-
-en:
- hello: "Hello world"
diff --git a/spec/integration/rails_5.2.4.1/config/puma.rb b/spec/integration/rails_5.2.4.1/config/puma.rb
deleted file mode 100644
index b2102072b..000000000
--- a/spec/integration/rails_5.2.4.1/config/puma.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-# Puma can serve each request in a thread from an internal thread pool.
-# The `threads` method setting takes two numbers: a minimum and maximum.
-# Any libraries that use thread pools should be configured to match
-# the maximum value specified for Puma. Default is set to 5 threads for minimum
-# and maximum; this matches the default thread size of Active Record.
-#
-threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
-threads threads_count, threads_count
-
-# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
-#
-port ENV.fetch("PORT") { 3000 }
-
-# Specifies the `environment` that Puma will run in.
-#
-environment ENV.fetch("RAILS_ENV") { "development" }
-
-# Specifies the `pidfile` that Puma will use.
-pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
-
-# Specifies the number of `workers` to boot in clustered mode.
-# Workers are forked webserver processes. If using threads and workers together
-# the concurrency of the application would be max `threads` * `workers`.
-# Workers do not work on JRuby or Windows (both of which do not support
-# processes).
-#
-# workers ENV.fetch("WEB_CONCURRENCY") { 2 }
-
-# Use the `preload_app!` method when specifying a `workers` number.
-# This directive tells Puma to first boot the application and load code
-# before forking the application. This takes advantage of Copy On Write
-# process behavior so workers use less memory.
-#
-# preload_app!
-
-# Allow puma to be restarted by `rails restart` command.
-plugin :tmp_restart
diff --git a/spec/integration/rails_5.2.4.1/config/routes.rb b/spec/integration/rails_5.2.4.1/config/routes.rb
deleted file mode 100644
index 2a9234a0a..000000000
--- a/spec/integration/rails_5.2.4.1/config/routes.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-Rails.application.routes.draw do
- # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
- resources :tasks
-end
diff --git a/spec/integration/rails_5.2.4.1/config/spring.rb b/spec/integration/rails_5.2.4.1/config/spring.rb
deleted file mode 100644
index 9fa7863f9..000000000
--- a/spec/integration/rails_5.2.4.1/config/spring.rb
+++ /dev/null
@@ -1,6 +0,0 @@
-%w[
- .ruby-version
- .rbenv-vars
- tmp/restart.txt
- tmp/caching-dev.txt
-].each { |path| Spring.watch(path) }
diff --git a/spec/integration/rails_5.2.4.1/config/storage.yml b/spec/integration/rails_5.2.4.1/config/storage.yml
deleted file mode 100644
index d32f76e8f..000000000
--- a/spec/integration/rails_5.2.4.1/config/storage.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-test:
- service: Disk
- root: <%= Rails.root.join("tmp/storage") %>
-
-local:
- service: Disk
- root: <%= Rails.root.join("storage") %>
-
-# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
-# amazon:
-# service: S3
-# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
-# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
-# region: us-east-1
-# bucket: your_own_bucket
-
-# Remember not to checkin your GCS keyfile to a repository
-# google:
-# service: GCS
-# project: your_project
-# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %>
-# bucket: your_own_bucket
-
-# Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
-# microsoft:
-# service: AzureStorage
-# storage_account_name: your_account_name
-# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
-# container: your_container_name
-
-# mirror:
-# service: Mirror
-# primary: local
-# mirrors: [ amazon, google, microsoft ]
diff --git a/spec/integration/rails_5.2.4.1/db/migrate/20200204052946_create_tasks.rb b/spec/integration/rails_5.2.4.1/db/migrate/20200204052946_create_tasks.rb
deleted file mode 100644
index f4b276aa8..000000000
--- a/spec/integration/rails_5.2.4.1/db/migrate/20200204052946_create_tasks.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-class CreateTasks < ActiveRecord::Migration[5.2]
- def change
- create_table :tasks do |t|
- t.string :content
- t.integer :count, default: 0
- t.boolean :status, default: false
-
- t.timestamps
- end
- end
-end
diff --git a/spec/integration/rails_5.2.4.1/db/schema.rb b/spec/integration/rails_5.2.4.1/db/schema.rb
deleted file mode 100644
index 4d585f43c..000000000
--- a/spec/integration/rails_5.2.4.1/db/schema.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is auto-generated from the current state of the database. Instead
-# of editing this file, please use the migrations feature of Active Record to
-# incrementally modify your database, and then regenerate this schema definition.
-#
-# Note that this schema.rb definition is the authoritative source for your
-# database schema. If you need to create the application database on another
-# system, you should be using db:schema:load, not running all the migrations
-# from scratch. The latter is a flawed and unsustainable approach (the more migrations
-# you'll amass, the slower it'll run and the greater likelihood for issues).
-#
-# It's strongly recommended that you check this file into your version control system.
-
-ActiveRecord::Schema.define(version: 2020_02_04_052946) do
-
- create_table "tasks", force: :cascade do |t|
- t.string "content"
- t.integer "count", default: 0
- t.boolean "status", default: false
- t.datetime "created_at", null: false
- t.datetime "updated_at", null: false
- end
-
-end
diff --git a/spec/integration/rails_5.2.4.1/db/seeds.rb b/spec/integration/rails_5.2.4.1/db/seeds.rb
deleted file mode 100644
index 1beea2acc..000000000
--- a/spec/integration/rails_5.2.4.1/db/seeds.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# This file should contain all the record creation needed to seed the database with its default values.
-# The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup).
-#
-# Examples:
-#
-# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
-# Character.create(name: 'Luke', movie: movies.first)
diff --git a/spec/integration/rails_5.2.4.1/lib/assets/.keep b/spec/integration/rails_5.2.4.1/lib/assets/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/lib/tasks/.keep b/spec/integration/rails_5.2.4.1/lib/tasks/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/log/.keep b/spec/integration/rails_5.2.4.1/log/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/package.json b/spec/integration/rails_5.2.4.1/package.json
deleted file mode 100644
index e064671a6..000000000
--- a/spec/integration/rails_5.2.4.1/package.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "name": "rails_5_2_4_1",
- "private": true,
- "dependencies": {}
-}
diff --git a/spec/integration/rails_5.2.4.1/public/404.html b/spec/integration/rails_5.2.4.1/public/404.html
deleted file mode 100644
index 2be3af26f..000000000
--- a/spec/integration/rails_5.2.4.1/public/404.html
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
- The page you were looking for doesn't exist (404)
-
-
-
-
-
-
-
-
-
The page you were looking for doesn't exist.
-
You may have mistyped the address or the page may have moved.
-
-
If you are the application owner check the logs for more information.
-
-
-
diff --git a/spec/integration/rails_5.2.4.1/public/422.html b/spec/integration/rails_5.2.4.1/public/422.html
deleted file mode 100644
index c08eac0d1..000000000
--- a/spec/integration/rails_5.2.4.1/public/422.html
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
- The change you wanted was rejected (422)
-
-
-
-
-
-
-
-
-
The change you wanted was rejected.
-
Maybe you tried to change something you didn't have access to.
-
-
If you are the application owner check the logs for more information.
-
-
-
diff --git a/spec/integration/rails_5.2.4.1/public/500.html b/spec/integration/rails_5.2.4.1/public/500.html
deleted file mode 100644
index 78a030af2..000000000
--- a/spec/integration/rails_5.2.4.1/public/500.html
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
- We're sorry, but something went wrong (500)
-
-
-
-
-
-
-
-
-
We're sorry, but something went wrong.
-
-
If you are the application owner check the logs for more information.
-
-
-
diff --git a/spec/integration/rails_5.2.4.1/public/apple-touch-icon-precomposed.png b/spec/integration/rails_5.2.4.1/public/apple-touch-icon-precomposed.png
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/public/apple-touch-icon.png b/spec/integration/rails_5.2.4.1/public/apple-touch-icon.png
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/public/favicon.ico b/spec/integration/rails_5.2.4.1/public/favicon.ico
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/public/robots.txt b/spec/integration/rails_5.2.4.1/public/robots.txt
deleted file mode 100644
index 37b576a4a..000000000
--- a/spec/integration/rails_5.2.4.1/public/robots.txt
+++ /dev/null
@@ -1 +0,0 @@
-# See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
diff --git a/spec/integration/rails_5.2.4.1/storage/.keep b/spec/integration/rails_5.2.4.1/storage/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/test/application_system_test_case.rb b/spec/integration/rails_5.2.4.1/test/application_system_test_case.rb
deleted file mode 100644
index d19212abd..000000000
--- a/spec/integration/rails_5.2.4.1/test/application_system_test_case.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require "test_helper"
-
-class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
- driven_by :selenium, using: :chrome, screen_size: [1400, 1400]
-end
diff --git a/spec/integration/rails_5.2.4.1/test/controllers/.keep b/spec/integration/rails_5.2.4.1/test/controllers/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/test/fixtures/.keep b/spec/integration/rails_5.2.4.1/test/fixtures/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/test/fixtures/files/.keep b/spec/integration/rails_5.2.4.1/test/fixtures/files/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/test/fixtures/tasks.yml b/spec/integration/rails_5.2.4.1/test/fixtures/tasks.yml
deleted file mode 100644
index 552ecdf1e..000000000
--- a/spec/integration/rails_5.2.4.1/test/fixtures/tasks.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
-
-one:
- content: MyString
- count: 1
- status: false
-
-two:
- content: MyString
- count: 1
- status: false
diff --git a/spec/integration/rails_5.2.4.1/test/helpers/.keep b/spec/integration/rails_5.2.4.1/test/helpers/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/test/integration/.keep b/spec/integration/rails_5.2.4.1/test/integration/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/test/mailers/.keep b/spec/integration/rails_5.2.4.1/test/mailers/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/test/models/.keep b/spec/integration/rails_5.2.4.1/test/models/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/test/models/task_test.rb b/spec/integration/rails_5.2.4.1/test/models/task_test.rb
deleted file mode 100644
index 3ca215970..000000000
--- a/spec/integration/rails_5.2.4.1/test/models/task_test.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'test_helper'
-
-class TaskTest < ActiveSupport::TestCase
- # test "the truth" do
- # assert true
- # end
-end
diff --git a/spec/integration/rails_5.2.4.1/test/system/.keep b/spec/integration/rails_5.2.4.1/test/system/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/test/test_helper.rb b/spec/integration/rails_5.2.4.1/test/test_helper.rb
deleted file mode 100644
index 3ab84e3d1..000000000
--- a/spec/integration/rails_5.2.4.1/test/test_helper.rb
+++ /dev/null
@@ -1,10 +0,0 @@
-ENV['RAILS_ENV'] ||= 'test'
-require_relative '../config/environment'
-require 'rails/test_help'
-
-class ActiveSupport::TestCase
- # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
- fixtures :all
-
- # Add more helper methods to be used by all tests here...
-end
diff --git a/spec/integration/rails_5.2.4.1/tmp/.keep b/spec/integration/rails_5.2.4.1/tmp/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1/vendor/.keep b/spec/integration/rails_5.2.4.1/vendor/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_5.2.4.1_spec.rb b/spec/integration/rails_5.2.4.1_spec.rb
deleted file mode 100644
index 06a62cea7..000000000
--- a/spec/integration/rails_5.2.4.1_spec.rb
+++ /dev/null
@@ -1,171 +0,0 @@
-require 'bundler'
-require 'rspec'
-require 'git'
-require_relative 'integration_helper'
-
-describe 'Integration testing on Rails 5.2.4.1', if: IntegrationHelper.able_to_run?(__FILE__, RUBY_VERSION) do
- ::RAILS_5_2_APP_NAME = 'rails_5.2.4.1'.freeze
- ::RAILS_5_2_PROJECT_PATH = File.expand_path('../..', __dir__).freeze
- ::RAILS_5_2_APP_PATH = File.expand_path(RAILS_5_2_APP_NAME, __dir__).freeze
-
- let!(:git) { Git.open(RAILS_5_2_PROJECT_PATH) }
-
- before(:all) do
- Bundler.with_clean_env do
- Dir.chdir RAILS_5_2_APP_PATH do
- puts `bundle install`
- puts `bin/rails db:migrate`
- end
- end
- end
-
- after(:each) do
- git.reset_hard
- end
-
- describe 'annotate --models' do
- let(:command) { 'bundle exec annotate --models' }
-
- let(:task_model) do
- patch = <<~PATCH
- +# == Schema Information
- +#
- +# Table name: tasks
- +#
- +# id :integer not null, primary key
- +# content :string
- +# count :integer default(0)
- +# status :boolean default(FALSE)
- +# created_at :datetime not null
- +# updated_at :datetime not null
- +#
- PATCH
-
- path = 'app/models/task.rb'
- {
- path: include(path),
- patch: include(patch)
- }
- end
- let(:task_test) do
- patch = <<~PATCH
- +# == Schema Information
- +#
- +# Table name: tasks
- +#
- +# id :integer not null, primary key
- +# content :string
- +# count :integer default(0)
- +# status :boolean default(FALSE)
- +# created_at :datetime not null
- +# updated_at :datetime not null
- +#
- PATCH
-
- path = 'test/models/task_test.rb'
- {
- path: include(path),
- patch: include(patch)
- }
- end
- let(:task_fixture) do
- patch = <<~PATCH
- +# == Schema Information
- +#
- +# Table name: tasks
- +#
- +# id :integer not null, primary key
- +# content :string
- +# count :integer default(0)
- +# status :boolean default(FALSE)
- +# created_at :datetime not null
- +# updated_at :datetime not null
- +#
- PATCH
-
- path = 'test/fixtures/tasks.yml'
- {
- path: include(path),
- patch: include(patch)
- }
- end
-
- it 'annotate models' do
- Bundler.with_clean_env do
- Dir.chdir RAILS_5_2_APP_PATH do
- expect(git.diff.any?).to be_falsy
-
- puts `#{command}`
-
- expect(git.diff.entries).to contain_exactly(
- an_object_having_attributes(task_model),
- an_object_having_attributes(task_test),
- an_object_having_attributes(task_fixture)
- )
- end
- end
- end
- end
-
- describe 'annotate --routes' do
- let(:command) { 'bundle exec annotate --routes' }
-
- let(:task_routes) do
- task_routes_diff = <<-DIFF
-+# == Route Map
-+#
-+# Prefix Verb URI Pattern Controller#Action
-+# tasks GET /tasks(.:format) tasks#index
-+# POST /tasks(.:format) tasks#create
-+# new_task GET /tasks/new(.:format) tasks#new
-+# edit_task GET /tasks/:id/edit(.:format) tasks#edit
-+# task GET /tasks/:id(.:format) tasks#show
-+# PATCH /tasks/:id(.:format) tasks#update
-+# PUT /tasks/:id(.:format) tasks#update
-+# DELETE /tasks/:id(.:format) tasks#destroy
- DIFF
-
- default_routes_diff = <<-DIFF
-+# rails_service_blob GET /rails/active_storage/blobs/:signed_id/*filename(.:format) active_storage/blobs#show
-+# rails_blob_representation GET /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show
-+# rails_disk_service GET /rails/active_storage/disk/:encoded_key/*filename(.:format) active_storage/disk#show
-+# update_rails_disk_service PUT /rails/active_storage/disk/:encoded_token(.:format) active_storage/disk#update
-+# rails_direct_uploads POST /rails/active_storage/direct_uploads(.:format) active_storage/direct_uploads#create
- DIFF
-
- path = 'config/routes.rb'
- {
- path: include(path),
- patch: include(task_routes_diff, default_routes_diff)
- }
- end
-
- it 'annotate routes.rb' do
- Bundler.with_clean_env do
- Dir.chdir RAILS_5_2_APP_PATH do
- expect(git.diff.any?).to be_falsy
-
- puts `#{command}`
-
- expect(git.diff.entries).to contain_exactly(an_object_having_attributes(task_routes))
- end
- end
- end
- end
-
- describe 'rails g annotate:install' do
- let(:command) { 'bin/rails g annotate:install' }
- let(:rake_file_path) { 'lib/tasks/auto_annotate_models.rake' }
-
- it 'generates the rake file' do
- Bundler.with_clean_env do
- Dir.chdir RAILS_5_2_APP_PATH do
- full_path = File.expand_path(rake_file_path)
- expect { `#{command}` }.to change { File.exist?(rake_file_path) }.from(false).to(true)
-
- File.delete(full_path)
- end
- end
- end
- end
-end
diff --git a/spec/integration/rails_6.0.2.1/.gitignore b/spec/integration/rails_6.0.2.1/.gitignore
deleted file mode 100644
index 376e85884..000000000
--- a/spec/integration/rails_6.0.2.1/.gitignore
+++ /dev/null
@@ -1,36 +0,0 @@
-# See https://help.github.com/articles/ignoring-files for more about ignoring files.
-#
-# If you find yourself ignoring temporary files generated by your text editor
-# or operating system, you probably want to add a global ignore instead:
-# git config --global core.excludesfile '~/.gitignore_global'
-
-# Ignore bundler config.
-/.bundle
-
-# Ignore the default SQLite database.
-/db/*.sqlite3
-/db/*.sqlite3-journal
-/db/*.sqlite3-*
-
-# Ignore all logfiles and tempfiles.
-/log/*
-/tmp/*
-!/log/.keep
-!/tmp/.keep
-
-# Ignore uploaded files in development.
-/storage/*
-!/storage/.keep
-
-/public/assets
-.byebug_history
-
-# Ignore master key for decrypting credentials and more.
-/config/master.key
-
-/public/packs
-/public/packs-test
-/node_modules
-/yarn-error.log
-yarn-debug.log*
-.yarn-integrity
\ No newline at end of file
diff --git a/spec/integration/rails_6.0.2.1/.keep b/spec/integration/rails_6.0.2.1/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/.rubocop.yml b/spec/integration/rails_6.0.2.1/.rubocop.yml
deleted file mode 100644
index cc32da4b9..000000000
--- a/spec/integration/rails_6.0.2.1/.rubocop.yml
+++ /dev/null
@@ -1 +0,0 @@
-inherit_from: .rubocop_todo.yml
diff --git a/spec/integration/rails_6.0.2.1/.rubocop_todo.yml b/spec/integration/rails_6.0.2.1/.rubocop_todo.yml
deleted file mode 100644
index b7b989b77..000000000
--- a/spec/integration/rails_6.0.2.1/.rubocop_todo.yml
+++ /dev/null
@@ -1,156 +0,0 @@
-# This configuration was generated by
-# `rubocop --auto-gen-config`
-# on 2020-02-01 10:51:52 -1000 using RuboCop version 0.68.1.
-# The point is for the user to remove these configuration records
-# one by one as the offenses are removed from the code base.
-# Note that changes in the inspected code, or installation of new
-# versions of RuboCop, may require this file to be generated again.
-
-# Offense count: 1
-# Cop supports --auto-correct.
-# Configuration parameters: TreatCommentsAsGroupSeparators, Include.
-# Include: **/*.gemfile, **/Gemfile, **/gems.rb
-Bundler/OrderedGems:
- Exclude:
- - 'Gemfile'
-
-# Offense count: 1
-# Cop supports --auto-correct.
-# Configuration parameters: EnforcedStyle, IndentationWidth.
-# SupportedStyles: outdent, indent
-Layout/AccessModifierIndentation:
- Exclude:
- - 'bin/bundle'
-
-# Offense count: 6
-# Cop supports --auto-correct.
-Layout/EmptyLineAfterGuardClause:
- Exclude:
- - 'bin/bundle'
-
-# Offense count: 1
-# Cop supports --auto-correct.
-Layout/EmptyLines:
- Exclude:
- - 'config/environments/development.rb'
-
-# Offense count: 2
-# Cop supports --auto-correct.
-# Configuration parameters: EnforcedStyle.
-# SupportedStyles: empty_lines, no_empty_lines
-Layout/EmptyLinesAroundBlockBody:
- Exclude:
- - 'db/schema.rb'
-
-# Offense count: 2
-# Cop supports --auto-correct.
-# Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBrackets.
-# SupportedStyles: space, no_space, compact
-# SupportedStylesForEmptyBrackets: space, no_space
-Layout/SpaceInsideArrayLiteralBrackets:
- Exclude:
- - 'config/environments/production.rb'
-
-# Offense count: 1
-Metrics/AbcSize:
- Max: 18
-
-# Offense count: 1
-Metrics/CyclomaticComplexity:
- Max: 9
-
-# Offense count: 2
-# Configuration parameters: CountComments, ExcludedMethods.
-Metrics/MethodLength:
- Max: 13
-
-# Offense count: 1
-Metrics/PerceivedComplexity:
- Max: 9
-
-# Offense count: 2
-# Cop supports --auto-correct.
-# Configuration parameters: AutoCorrect, EnforcedStyle.
-# SupportedStyles: nested, compact
-Style/ClassAndModuleChildren:
- Exclude:
- - 'test/channels/application_cable/connection_test.rb'
- - 'test/test_helper.rb'
-
-# Offense count: 5
-Style/Documentation:
- Exclude:
- - 'spec/**/*'
- - 'test/**/*'
- - 'app/helpers/application_helper.rb'
- - 'app/mailers/application_mailer.rb'
- - 'app/models/application_record.rb'
- - 'config/application.rb'
- - 'db/migrate/20200201204456_create_tasks.rb'
-
-# Offense count: 1
-# Cop supports --auto-correct.
-Style/ExpandPathArguments:
- Exclude:
- - 'bin/bundle'
-
-# Offense count: 37
-# Cop supports --auto-correct.
-# Configuration parameters: EnforcedStyle.
-# SupportedStyles: when_needed, always, never
-Style/FrozenStringLiteralComment:
- Enabled: false
-
-# Offense count: 3
-# Cop supports --auto-correct.
-Style/IfUnlessModifier:
- Exclude:
- - 'bin/bundle'
-
-# Offense count: 1
-# Cop supports --auto-correct.
-# Configuration parameters: MinDigits, Strict.
-Style/NumericLiterals:
- Exclude:
- - 'db/schema.rb'
-
-# Offense count: 1
-# Cop supports --auto-correct.
-Style/PerlBackrefs:
- Exclude:
- - 'bin/bundle'
-
-# Offense count: 1
-# Cop supports --auto-correct.
-# Configuration parameters: .
-# SupportedStyles: use_perl_names, use_english_names
-Style/SpecialGlobalVars:
- EnforcedStyle: use_perl_names
-
-# Offense count: 43
-# Cop supports --auto-correct.
-# Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline.
-# SupportedStyles: single_quotes, double_quotes
-Style/StringLiterals:
- Exclude:
- - 'bin/bundle'
- - 'config/application.rb'
- - 'config/environments/production.rb'
- - 'config/puma.rb'
- - 'db/schema.rb'
- - 'test/application_system_test_case.rb'
- - 'test/channels/application_cable/connection_test.rb'
-
-# Offense count: 2
-# Cop supports --auto-correct.
-# Configuration parameters: MinSize.
-# SupportedStyles: percent, brackets
-Style/SymbolArray:
- EnforcedStyle: brackets
-
-# Offense count: 40
-# Cop supports --auto-correct.
-# Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
-# URISchemes: http, https
-Metrics/LineLength:
- Max: 190
diff --git a/spec/integration/rails_6.0.2.1/Gemfile b/spec/integration/rails_6.0.2.1/Gemfile
deleted file mode 100644
index 4d2b38e57..000000000
--- a/spec/integration/rails_6.0.2.1/Gemfile
+++ /dev/null
@@ -1,45 +0,0 @@
-source 'https://rubygems.org'
-git_source(:github) { |repo| "https://github.com/#{repo}.git" }
-
-# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
-gem 'rails', '~> 6.0.2', '>= 6.0.2.1'
-# Use sqlite3 as the database for Active Record
-gem 'sqlite3', '~> 1.4'
-# Use Puma as the app server
-gem 'puma', '~> 5.6.1'
-# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
-gem 'jbuilder', '~> 2.7'
-# Use Redis adapter to run Action Cable in production
-# gem 'redis', '~> 4.0'
-# Use Active Model has_secure_password
-# gem 'bcrypt', '~> 3.1.7'
-
-# Use Active Storage variant
-# gem 'image_processing', '~> 1.2'
-
-# Reduces boot times through caching; required in config/boot.rb
-gem 'bootsnap', '>= 1.4.2', require: false
-
-group :development, :test do
- # Call 'byebug' anywhere in the code to stop execution and get a debugger console
- gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
-end
-
-group :development do
- gem 'annotate', path: '../../..'
-
- # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
- gem 'web-console', '>= 3.3.0'
- gem 'listen', '>= 3.0.5', '< 3.2'
-end
-
-group :test do
- # Adds support for Capybara system testing and selenium driver
- gem 'capybara', '>= 2.15'
- gem 'selenium-webdriver'
- # Easy installation and use of web drivers to run system tests with browsers
- gem 'webdrivers'
-end
-
-# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
-gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
diff --git a/spec/integration/rails_6.0.2.1/Gemfile.lock b/spec/integration/rails_6.0.2.1/Gemfile.lock
deleted file mode 100644
index da8b82f98..000000000
--- a/spec/integration/rails_6.0.2.1/Gemfile.lock
+++ /dev/null
@@ -1,205 +0,0 @@
-PATH
- remote: ../../..
- specs:
- annotate (3.1.1)
- activerecord (>= 3.2, < 8.0)
- rake (>= 10.4, < 14.0)
-
-GEM
- remote: https://rubygems.org/
- specs:
- actioncable (6.0.2.1)
- actionpack (= 6.0.2.1)
- nio4r (~> 2.0)
- websocket-driver (>= 0.6.1)
- actionmailbox (6.0.2.1)
- actionpack (= 6.0.2.1)
- activejob (= 6.0.2.1)
- activerecord (= 6.0.2.1)
- activestorage (= 6.0.2.1)
- activesupport (= 6.0.2.1)
- mail (>= 2.7.1)
- actionmailer (6.0.2.1)
- actionpack (= 6.0.2.1)
- actionview (= 6.0.2.1)
- activejob (= 6.0.2.1)
- mail (~> 2.5, >= 2.5.4)
- rails-dom-testing (~> 2.0)
- actionpack (6.0.2.1)
- actionview (= 6.0.2.1)
- activesupport (= 6.0.2.1)
- rack (~> 2.0, >= 2.0.8)
- rack-test (>= 0.6.3)
- rails-dom-testing (~> 2.0)
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
- actiontext (6.0.2.1)
- actionpack (= 6.0.2.1)
- activerecord (= 6.0.2.1)
- activestorage (= 6.0.2.1)
- activesupport (= 6.0.2.1)
- nokogiri (>= 1.8.5)
- actionview (6.0.2.1)
- activesupport (= 6.0.2.1)
- builder (~> 3.1)
- erubi (~> 1.4)
- rails-dom-testing (~> 2.0)
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
- activejob (6.0.2.1)
- activesupport (= 6.0.2.1)
- globalid (>= 0.3.6)
- activemodel (6.0.2.1)
- activesupport (= 6.0.2.1)
- activerecord (6.0.2.1)
- activemodel (= 6.0.2.1)
- activesupport (= 6.0.2.1)
- activestorage (6.0.2.1)
- actionpack (= 6.0.2.1)
- activejob (= 6.0.2.1)
- activerecord (= 6.0.2.1)
- marcel (~> 0.3.1)
- activesupport (6.0.2.1)
- concurrent-ruby (~> 1.0, >= 1.0.2)
- i18n (>= 0.7, < 2)
- minitest (~> 5.1)
- tzinfo (~> 1.1)
- zeitwerk (~> 2.2)
- addressable (2.8.0)
- public_suffix (>= 2.0.2, < 5.0)
- bindex (0.8.1)
- bootsnap (1.4.5)
- msgpack (~> 1.0)
- builder (3.2.4)
- byebug (11.1.1)
- capybara (3.31.0)
- addressable
- mini_mime (>= 0.1.3)
- nokogiri (~> 1.8)
- rack (>= 1.6.0)
- rack-test (>= 0.6.3)
- regexp_parser (~> 1.5)
- xpath (~> 3.2)
- childprocess (3.0.0)
- concurrent-ruby (1.1.8)
- crass (1.0.6)
- erubi (1.10.0)
- ffi (1.15.5)
- globalid (0.4.2)
- activesupport (>= 4.2.0)
- i18n (1.8.10)
- concurrent-ruby (~> 1.0)
- jbuilder (2.9.1)
- activesupport (>= 4.2.0)
- listen (3.1.5)
- rb-fsevent (~> 0.9, >= 0.9.4)
- rb-inotify (~> 0.9, >= 0.9.7)
- ruby_dep (~> 1.2)
- loofah (2.9.0)
- crass (~> 1.0.2)
- nokogiri (>= 1.5.9)
- mail (2.7.1)
- mini_mime (>= 0.1.1)
- marcel (0.3.3)
- mimemagic (~> 0.3.2)
- method_source (0.9.2)
- mimemagic (0.3.10)
- nokogiri (~> 1)
- rake
- mini_mime (1.0.2)
- mini_portile2 (2.5.3)
- minitest (5.14.4)
- msgpack (1.3.1)
- nio4r (2.5.2)
- nokogiri (1.11.7)
- mini_portile2 (~> 2.5.0)
- racc (~> 1.4)
- public_suffix (4.0.6)
- puma (5.6.1)
- nio4r (~> 2.0)
- racc (1.5.2)
- rack (2.2.3)
- rack-test (1.1.0)
- rack (>= 1.0, < 3)
- rails (6.0.2.1)
- actioncable (= 6.0.2.1)
- actionmailbox (= 6.0.2.1)
- actionmailer (= 6.0.2.1)
- actionpack (= 6.0.2.1)
- actiontext (= 6.0.2.1)
- actionview (= 6.0.2.1)
- activejob (= 6.0.2.1)
- activemodel (= 6.0.2.1)
- activerecord (= 6.0.2.1)
- activestorage (= 6.0.2.1)
- activesupport (= 6.0.2.1)
- bundler (>= 1.3.0)
- railties (= 6.0.2.1)
- sprockets-rails (>= 2.0.0)
- rails-dom-testing (2.0.3)
- activesupport (>= 4.2.0)
- nokogiri (>= 1.6)
- rails-html-sanitizer (1.3.0)
- loofah (~> 2.3)
- railties (6.0.2.1)
- actionpack (= 6.0.2.1)
- activesupport (= 6.0.2.1)
- method_source
- rake (>= 0.8.7)
- thor (>= 0.20.3, < 2.0)
- rake (13.0.3)
- rb-fsevent (0.11.0)
- rb-inotify (0.10.1)
- ffi (~> 1.0)
- regexp_parser (1.6.0)
- ruby_dep (1.5.0)
- rubyzip (2.2.0)
- selenium-webdriver (3.142.7)
- childprocess (>= 0.5, < 4.0)
- rubyzip (>= 1.2.2)
- sprockets (4.0.0)
- concurrent-ruby (~> 1.0)
- rack (> 1, < 3)
- sprockets-rails (3.2.1)
- actionpack (>= 4.0)
- activesupport (>= 4.0)
- sprockets (>= 3.0.0)
- sqlite3 (1.4.2)
- thor (1.0.1)
- thread_safe (0.3.6)
- tzinfo (1.2.9)
- thread_safe (~> 0.1)
- web-console (4.0.1)
- actionview (>= 6.0.0)
- activemodel (>= 6.0.0)
- bindex (>= 0.4.0)
- railties (>= 6.0.0)
- webdrivers (4.2.0)
- nokogiri (~> 1.6)
- rubyzip (>= 1.3.0)
- selenium-webdriver (>= 3.0, < 4.0)
- websocket-driver (0.7.1)
- websocket-extensions (>= 0.1.0)
- websocket-extensions (0.1.5)
- xpath (3.2.0)
- nokogiri (~> 1.8)
- zeitwerk (2.4.2)
-
-PLATFORMS
- ruby
-
-DEPENDENCIES
- annotate!
- bootsnap (>= 1.4.2)
- byebug
- capybara (>= 2.15)
- jbuilder (~> 2.7)
- listen (>= 3.0.5, < 3.2)
- puma (~> 5.6.1)
- rails (~> 6.0.2, >= 6.0.2.1)
- selenium-webdriver
- sqlite3 (~> 1.4)
- tzinfo-data
- web-console (>= 3.3.0)
- webdrivers
-
-BUNDLED WITH
- 2.2.15
diff --git a/spec/integration/rails_6.0.2.1/README.md b/spec/integration/rails_6.0.2.1/README.md
deleted file mode 100644
index 7db80e4ca..000000000
--- a/spec/integration/rails_6.0.2.1/README.md
+++ /dev/null
@@ -1,24 +0,0 @@
-# README
-
-This README would normally document whatever steps are necessary to get the
-application up and running.
-
-Things you may want to cover:
-
-* Ruby version
-
-* System dependencies
-
-* Configuration
-
-* Database creation
-
-* Database initialization
-
-* How to run the test suite
-
-* Services (job queues, cache servers, search engines, etc.)
-
-* Deployment instructions
-
-* ...
diff --git a/spec/integration/rails_6.0.2.1/Rakefile b/spec/integration/rails_6.0.2.1/Rakefile
deleted file mode 100644
index e85f91391..000000000
--- a/spec/integration/rails_6.0.2.1/Rakefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# Add your own tasks in files placed in lib/tasks ending in .rake,
-# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
-
-require_relative 'config/application'
-
-Rails.application.load_tasks
diff --git a/spec/integration/rails_6.0.2.1/app/assets/config/manifest.js b/spec/integration/rails_6.0.2.1/app/assets/config/manifest.js
deleted file mode 100644
index 591819335..000000000
--- a/spec/integration/rails_6.0.2.1/app/assets/config/manifest.js
+++ /dev/null
@@ -1,2 +0,0 @@
-//= link_tree ../images
-//= link_directory ../stylesheets .css
diff --git a/spec/integration/rails_6.0.2.1/app/assets/images/.keep b/spec/integration/rails_6.0.2.1/app/assets/images/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/app/assets/stylesheets/application.css b/spec/integration/rails_6.0.2.1/app/assets/stylesheets/application.css
deleted file mode 100644
index d05ea0f51..000000000
--- a/spec/integration/rails_6.0.2.1/app/assets/stylesheets/application.css
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * This is a manifest file that'll be compiled into application.css, which will include all the files
- * listed below.
- *
- * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's
- * vendor/assets/stylesheets directory can be referenced here using a relative path.
- *
- * You're free to add application-wide styles to this file and they'll appear at the bottom of the
- * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
- * files in this directory. Styles in this file should be added after the last require_* statement.
- * It is generally better to create a new file per style scope.
- *
- *= require_tree .
- *= require_self
- */
diff --git a/spec/integration/rails_6.0.2.1/app/channels/application_cable/channel.rb b/spec/integration/rails_6.0.2.1/app/channels/application_cable/channel.rb
deleted file mode 100644
index d67269728..000000000
--- a/spec/integration/rails_6.0.2.1/app/channels/application_cable/channel.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-module ApplicationCable
- class Channel < ActionCable::Channel::Base
- end
-end
diff --git a/spec/integration/rails_6.0.2.1/app/channels/application_cable/connection.rb b/spec/integration/rails_6.0.2.1/app/channels/application_cable/connection.rb
deleted file mode 100644
index 0ff5442f4..000000000
--- a/spec/integration/rails_6.0.2.1/app/channels/application_cable/connection.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-module ApplicationCable
- class Connection < ActionCable::Connection::Base
- end
-end
diff --git a/spec/integration/rails_6.0.2.1/app/controllers/application_controller.rb b/spec/integration/rails_6.0.2.1/app/controllers/application_controller.rb
deleted file mode 100644
index 09705d12a..000000000
--- a/spec/integration/rails_6.0.2.1/app/controllers/application_controller.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-class ApplicationController < ActionController::Base
-end
diff --git a/spec/integration/rails_6.0.2.1/app/controllers/concerns/.keep b/spec/integration/rails_6.0.2.1/app/controllers/concerns/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/app/helpers/application_helper.rb b/spec/integration/rails_6.0.2.1/app/helpers/application_helper.rb
deleted file mode 100644
index de6be7945..000000000
--- a/spec/integration/rails_6.0.2.1/app/helpers/application_helper.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-module ApplicationHelper
-end
diff --git a/spec/integration/rails_6.0.2.1/app/jobs/application_job.rb b/spec/integration/rails_6.0.2.1/app/jobs/application_job.rb
deleted file mode 100644
index d394c3d10..000000000
--- a/spec/integration/rails_6.0.2.1/app/jobs/application_job.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-class ApplicationJob < ActiveJob::Base
- # Automatically retry jobs that encountered a deadlock
- # retry_on ActiveRecord::Deadlocked
-
- # Most jobs are safe to ignore if the underlying records are no longer available
- # discard_on ActiveJob::DeserializationError
-end
diff --git a/spec/integration/rails_6.0.2.1/app/mailers/application_mailer.rb b/spec/integration/rails_6.0.2.1/app/mailers/application_mailer.rb
deleted file mode 100644
index 286b2239d..000000000
--- a/spec/integration/rails_6.0.2.1/app/mailers/application_mailer.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-class ApplicationMailer < ActionMailer::Base
- default from: 'from@example.com'
- layout 'mailer'
-end
diff --git a/spec/integration/rails_6.0.2.1/app/models/application_record.rb b/spec/integration/rails_6.0.2.1/app/models/application_record.rb
deleted file mode 100644
index 10a4cba84..000000000
--- a/spec/integration/rails_6.0.2.1/app/models/application_record.rb
+++ /dev/null
@@ -1,3 +0,0 @@
-class ApplicationRecord < ActiveRecord::Base
- self.abstract_class = true
-end
diff --git a/spec/integration/rails_6.0.2.1/app/models/concerns/.keep b/spec/integration/rails_6.0.2.1/app/models/concerns/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/app/models/task.rb b/spec/integration/rails_6.0.2.1/app/models/task.rb
deleted file mode 100644
index 3c2342421..000000000
--- a/spec/integration/rails_6.0.2.1/app/models/task.rb
+++ /dev/null
@@ -1,2 +0,0 @@
-class Task < ApplicationRecord
-end
diff --git a/spec/integration/rails_6.0.2.1/app/views/layouts/application.html.erb b/spec/integration/rails_6.0.2.1/app/views/layouts/application.html.erb
deleted file mode 100644
index ba0f86cb7..000000000
--- a/spec/integration/rails_6.0.2.1/app/views/layouts/application.html.erb
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
- Rails6021
- <%= csrf_meta_tags %>
- <%= csp_meta_tag %>
-
- <%= stylesheet_link_tag 'application', media: 'all' %>
-
-
-
- <%= yield %>
-
-
diff --git a/spec/integration/rails_6.0.2.1/app/views/layouts/mailer.html.erb b/spec/integration/rails_6.0.2.1/app/views/layouts/mailer.html.erb
deleted file mode 100644
index cbd34d2e9..000000000
--- a/spec/integration/rails_6.0.2.1/app/views/layouts/mailer.html.erb
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
- <%= yield %>
-
-
diff --git a/spec/integration/rails_6.0.2.1/app/views/layouts/mailer.text.erb b/spec/integration/rails_6.0.2.1/app/views/layouts/mailer.text.erb
deleted file mode 100644
index 37f0bddbd..000000000
--- a/spec/integration/rails_6.0.2.1/app/views/layouts/mailer.text.erb
+++ /dev/null
@@ -1 +0,0 @@
-<%= yield %>
diff --git a/spec/integration/rails_6.0.2.1/bin/bundle b/spec/integration/rails_6.0.2.1/bin/bundle
deleted file mode 100755
index 524dfd3f2..000000000
--- a/spec/integration/rails_6.0.2.1/bin/bundle
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/usr/bin/env ruby
-# frozen_string_literal: true
-
-#
-# This file was generated by Bundler.
-#
-# The application 'bundle' is installed as part of a gem, and
-# this file is here to facilitate running it.
-#
-
-require "rubygems"
-
-m = Module.new do
- module_function
-
- def invoked_as_script?
- File.expand_path($0) == File.expand_path(__FILE__)
- end
-
- def env_var_version
- ENV["BUNDLER_VERSION"]
- end
-
- def cli_arg_version
- return unless invoked_as_script? # don't want to hijack other binstubs
- return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update`
- bundler_version = nil
- update_index = nil
- ARGV.each_with_index do |a, i|
- if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
- bundler_version = a
- end
- next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/
- bundler_version = $1 || ">= 0.a"
- update_index = i
- end
- bundler_version
- end
-
- def gemfile
- gemfile = ENV["BUNDLE_GEMFILE"]
- return gemfile if gemfile && !gemfile.empty?
-
- File.expand_path("../../Gemfile", __FILE__)
- end
-
- def lockfile
- lockfile =
- case File.basename(gemfile)
- when "gems.rb" then gemfile.sub(/\.rb$/, gemfile)
- else "#{gemfile}.lock"
- end
- File.expand_path(lockfile)
- end
-
- def lockfile_version
- return unless File.file?(lockfile)
- lockfile_contents = File.read(lockfile)
- return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/
- Regexp.last_match(1)
- end
-
- def bundler_version
- @bundler_version ||= begin
- env_var_version || cli_arg_version ||
- lockfile_version || "#{Gem::Requirement.default}.a"
- end
- end
-
- def load_bundler!
- ENV["BUNDLE_GEMFILE"] ||= gemfile
-
- # must dup string for RG < 1.8 compatibility
- activate_bundler(bundler_version.dup)
- end
-
- def activate_bundler(bundler_version)
- if Gem::Version.correct?(bundler_version) && Gem::Version.new(bundler_version).release < Gem::Version.new("2.0")
- bundler_version = "< 2"
- end
- gem_error = activation_error_handling do
- gem "bundler", bundler_version
- end
- return if gem_error.nil?
- require_error = activation_error_handling do
- require "bundler/version"
- end
- return if require_error.nil? && Gem::Requirement.new(bundler_version).satisfied_by?(Gem::Version.new(Bundler::VERSION))
- warn "Activating bundler (#{bundler_version}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_version}'`"
- exit 42
- end
-
- def activation_error_handling
- yield
- nil
- rescue StandardError, LoadError => e
- e
- end
-end
-
-m.load_bundler!
-
-if m.invoked_as_script?
- load Gem.bin_path("bundler", "bundle")
-end
diff --git a/spec/integration/rails_6.0.2.1/bin/rails b/spec/integration/rails_6.0.2.1/bin/rails
deleted file mode 100755
index 073966023..000000000
--- a/spec/integration/rails_6.0.2.1/bin/rails
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env ruby
-APP_PATH = File.expand_path('../config/application', __dir__)
-require_relative '../config/boot'
-require 'rails/commands'
diff --git a/spec/integration/rails_6.0.2.1/bin/rake b/spec/integration/rails_6.0.2.1/bin/rake
deleted file mode 100755
index 17240489f..000000000
--- a/spec/integration/rails_6.0.2.1/bin/rake
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env ruby
-require_relative '../config/boot'
-require 'rake'
-Rake.application.run
diff --git a/spec/integration/rails_6.0.2.1/bin/setup b/spec/integration/rails_6.0.2.1/bin/setup
deleted file mode 100755
index 0e39e8cb1..000000000
--- a/spec/integration/rails_6.0.2.1/bin/setup
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env ruby
-require 'fileutils'
-
-# path to your application root.
-APP_ROOT = File.expand_path('..', __dir__)
-
-def system!(*args)
- system(*args) || abort("\n== Command #{args} failed ==")
-end
-
-FileUtils.chdir APP_ROOT do
- # This script is a way to setup or update your development environment automatically.
- # This script is idempotent, so that you can run it at anytime and get an expectable outcome.
- # Add necessary setup steps to this file.
-
- puts '== Installing dependencies =='
- system! 'gem install bundler --conservative'
- system('bundle check') || system!('bundle install')
-
- # puts "\n== Copying sample files =="
- # unless File.exist?('config/database.yml')
- # FileUtils.cp 'config/database.yml.sample', 'config/database.yml'
- # end
-
- puts "\n== Preparing database =="
- system! 'bin/rails db:prepare'
-
- puts "\n== Removing old logs and tempfiles =="
- system! 'bin/rails log:clear tmp:clear'
-
- puts "\n== Restarting application server =="
- system! 'bin/rails restart'
-end
diff --git a/spec/integration/rails_6.0.2.1/config.ru b/spec/integration/rails_6.0.2.1/config.ru
deleted file mode 100644
index f7ba0b527..000000000
--- a/spec/integration/rails_6.0.2.1/config.ru
+++ /dev/null
@@ -1,5 +0,0 @@
-# This file is used by Rack-based servers to start the application.
-
-require_relative 'config/environment'
-
-run Rails.application
diff --git a/spec/integration/rails_6.0.2.1/config/application.rb b/spec/integration/rails_6.0.2.1/config/application.rb
deleted file mode 100644
index fd711df93..000000000
--- a/spec/integration/rails_6.0.2.1/config/application.rb
+++ /dev/null
@@ -1,33 +0,0 @@
-require_relative 'boot'
-
-require "rails"
-# Pick the frameworks you want:
-require "active_model/railtie"
-require "active_job/railtie"
-require "active_record/railtie"
-require "active_storage/engine"
-require "action_controller/railtie"
-require "action_mailer/railtie"
-require "action_mailbox/engine"
-require "action_text/engine"
-require "action_view/railtie"
-require "action_cable/engine"
-# require "sprockets/railtie"
-require "rails/test_unit/railtie"
-
-# Require the gems listed in Gemfile, including any gems
-# you've limited to :test, :development, or :production.
-Bundler.require(*Rails.groups)
-
-module Rails6021
- class Application < Rails::Application
- # Initialize configuration defaults for originally generated Rails version.
- config.load_defaults 6.0
-
- # Settings in config/environments/* take precedence over those specified here.
- # Application configuration can go into files in config/initializers
- # -- all .rb files in that directory are automatically loaded after loading
- # the framework and any gems in your application.
- self.paths['config/database'] = 'config/multi-database.yml' if ENV['MULTI_DB']
- end
-end
diff --git a/spec/integration/rails_6.0.2.1/config/boot.rb b/spec/integration/rails_6.0.2.1/config/boot.rb
deleted file mode 100644
index b9e460cef..000000000
--- a/spec/integration/rails_6.0.2.1/config/boot.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
-
-require 'bundler/setup' # Set up gems listed in the Gemfile.
-require 'bootsnap/setup' # Speed up boot time by caching expensive operations.
diff --git a/spec/integration/rails_6.0.2.1/config/cable.yml b/spec/integration/rails_6.0.2.1/config/cable.yml
deleted file mode 100644
index 3b0858c95..000000000
--- a/spec/integration/rails_6.0.2.1/config/cable.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-development:
- adapter: async
-
-test:
- adapter: test
-
-production:
- adapter: redis
- url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %>
- channel_prefix: rails_6_0_2_1_production
diff --git a/spec/integration/rails_6.0.2.1/config/credentials.yml.enc b/spec/integration/rails_6.0.2.1/config/credentials.yml.enc
deleted file mode 100644
index 51e9ebc8c..000000000
--- a/spec/integration/rails_6.0.2.1/config/credentials.yml.enc
+++ /dev/null
@@ -1 +0,0 @@
-p9Ehs8NhqPrCcIMQWQwVqNKvXN0NnrY9Yn6zbHOJXv80LRwTVw+xrcK2pSr0Df3P42D9SQCzCkooDopjCRd3Rd2AGAj5oYybs8//J+YdDKxsEjdB8R2KG7A+fbLlztq2bHoPNvO9wU22fobO8ANxEV5JuqeLyBukcuzztNm5ZHuufp0J2ltSXJuX7rEToELKTob+g+PnecvmwGzTTQzBiZ2jMmaGqWXESXc4Y6VsnBjj1H6Xs/T4OXiq2rLBulV3NR5/orof2GJKV5ohX1U3z0jZzLPUflgDtPvJN4UieTiqpKa9Umibtdd3TOR/aj7uoXj0Tq9FYG3dIMqsWpUb1133zcYzWsyxbC2dXVvpga4/LsQE2/74I+n1WXC5zH30STOYWJpdhEn0S9I4kq+xwzMAJKALI9BzvgZL--9deAjVLbz0BaSSau--9gVti9PVO/wgBKe5nsl8Ow==
\ No newline at end of file
diff --git a/spec/integration/rails_6.0.2.1/config/database.yml b/spec/integration/rails_6.0.2.1/config/database.yml
deleted file mode 100644
index 4a8a1b26f..000000000
--- a/spec/integration/rails_6.0.2.1/config/database.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-# SQLite. Versions 3.8.0 and up are supported.
-# gem install sqlite3
-#
-# Ensure the SQLite 3 gem is defined in your Gemfile
-# gem 'sqlite3'
-#
-default: &default
- adapter: sqlite3
- pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
- timeout: 5000
-
-development:
- <<: *default
- database: db/development.sqlite3
-
-# Warning: The database defined as "test" will be erased and
-# re-generated from your development database when you run "rake".
-# Do not set this db to the same as development or production.
-test:
- <<: *default
- database: db/test.sqlite3
-
-production:
- <<: *default
- database: db/production.sqlite3
diff --git a/spec/integration/rails_6.0.2.1/config/environment.rb b/spec/integration/rails_6.0.2.1/config/environment.rb
deleted file mode 100644
index 426333bb4..000000000
--- a/spec/integration/rails_6.0.2.1/config/environment.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# Load the Rails application.
-require_relative 'application'
-
-# Initialize the Rails application.
-Rails.application.initialize!
diff --git a/spec/integration/rails_6.0.2.1/config/environments/development.rb b/spec/integration/rails_6.0.2.1/config/environments/development.rb
deleted file mode 100644
index 298f8d4b3..000000000
--- a/spec/integration/rails_6.0.2.1/config/environments/development.rb
+++ /dev/null
@@ -1,55 +0,0 @@
-Rails.application.configure do
- # Settings specified here will take precedence over those in config/application.rb.
-
- # In the development environment your application's code is reloaded on
- # every request. This slows down response time but is perfect for development
- # since you don't have to restart the web server when you make code changes.
- config.cache_classes = false
-
- # Do not eager load code on boot.
- config.eager_load = false
-
- # Show full error reports.
- config.consider_all_requests_local = true
-
- # Enable/disable caching. By default caching is disabled.
- # Run rails dev:cache to toggle caching.
- if Rails.root.join('tmp', 'caching-dev.txt').exist?
- config.action_controller.perform_caching = true
- config.action_controller.enable_fragment_cache_logging = true
-
- config.cache_store = :memory_store
- config.public_file_server.headers = {
- 'Cache-Control' => "public, max-age=#{2.days.to_i}"
- }
- else
- config.action_controller.perform_caching = false
-
- config.cache_store = :null_store
- end
-
- # Store uploaded files on the local file system (see config/storage.yml for options).
- config.active_storage.service = :local
-
- # Don't care if the mailer can't send.
- config.action_mailer.raise_delivery_errors = false
-
- config.action_mailer.perform_caching = false
-
- # Print deprecation notices to the Rails logger.
- config.active_support.deprecation = :log
-
- # Raise an error on page load if there are pending migrations.
- config.active_record.migration_error = :page_load
-
- # Highlight code that triggered database queries in logs.
- config.active_record.verbose_query_logs = true
-
-
- # Raises error for missing translations.
- # config.action_view.raise_on_missing_translations = true
-
- # Use an evented file watcher to asynchronously detect changes in source code,
- # routes, locales, etc. This feature depends on the listen gem.
- config.file_watcher = ActiveSupport::EventedFileUpdateChecker
-end
diff --git a/spec/integration/rails_6.0.2.1/config/environments/production.rb b/spec/integration/rails_6.0.2.1/config/environments/production.rb
deleted file mode 100644
index 5ce0e884d..000000000
--- a/spec/integration/rails_6.0.2.1/config/environments/production.rb
+++ /dev/null
@@ -1,106 +0,0 @@
-Rails.application.configure do
- # Settings specified here will take precedence over those in config/application.rb.
-
- # Code is not reloaded between requests.
- config.cache_classes = true
-
- # Eager load code on boot. This eager loads most of Rails and
- # your application in memory, allowing both threaded web servers
- # and those relying on copy on write to perform better.
- # Rake tasks automatically ignore this option for performance.
- config.eager_load = true
-
- # Full error reports are disabled and caching is turned on.
- config.consider_all_requests_local = false
- config.action_controller.perform_caching = true
-
- # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
- # or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
- # config.require_master_key = true
-
- # Disable serving static files from the `/public` folder by default since
- # Apache or NGINX already handles this.
- config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
-
- # Enable serving of images, stylesheets, and JavaScripts from an asset server.
- # config.action_controller.asset_host = 'http://assets.example.com'
-
- # Specifies the header that your server uses for sending files.
- # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
- # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
-
- # Store uploaded files on the local file system (see config/storage.yml for options).
- config.active_storage.service = :local
-
- # Mount Action Cable outside main process or domain.
- # config.action_cable.mount_path = nil
- # config.action_cable.url = 'wss://example.com/cable'
- # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
-
- # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
- # config.force_ssl = true
-
- # Use the lowest log level to ensure availability of diagnostic information
- # when problems arise.
- config.log_level = :debug
-
- # Prepend all log lines with the following tags.
- config.log_tags = [ :request_id ]
-
- # Use a different cache store in production.
- # config.cache_store = :mem_cache_store
-
- # Use a real queuing backend for Active Job (and separate queues per environment).
- # config.active_job.queue_adapter = :resque
- # config.active_job.queue_name_prefix = "rails_6_0_2_1_production"
-
- config.action_mailer.perform_caching = false
-
- # Ignore bad email addresses and do not raise email delivery errors.
- # Set this to true and configure the email server for immediate delivery to raise delivery errors.
- # config.action_mailer.raise_delivery_errors = false
-
- # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
- # the I18n.default_locale when a translation cannot be found).
- config.i18n.fallbacks = true
-
- # Send deprecation notices to registered listeners.
- config.active_support.deprecation = :notify
-
- # Use default logging formatter so that PID and timestamp are not suppressed.
- config.log_formatter = ::Logger::Formatter.new
-
- # Use a different logger for distributed setups.
- # require 'syslog/logger'
- # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name')
-
- if ENV["RAILS_LOG_TO_STDOUT"].present?
- logger = ActiveSupport::Logger.new(STDOUT)
- logger.formatter = config.log_formatter
- config.logger = ActiveSupport::TaggedLogging.new(logger)
- end
-
- # Do not dump schema after migrations.
- config.active_record.dump_schema_after_migration = false
-
- # Inserts middleware to perform automatic connection switching.
- # The `database_selector` hash is used to pass options to the DatabaseSelector
- # middleware. The `delay` is used to determine how long to wait after a write
- # to send a subsequent read to the primary.
- #
- # The `database_resolver` class is used by the middleware to determine which
- # database is appropriate to use based on the time delay.
- #
- # The `database_resolver_context` class is used by the middleware to set
- # timestamps for the last write to the primary. The resolver uses the context
- # class timestamps to determine how long to wait before reading from the
- # replica.
- #
- # By default Rails will store a last write timestamp in the session. The
- # DatabaseSelector middleware is designed as such you can define your own
- # strategy for connection switching and pass that into the middleware through
- # these configuration options.
- # config.active_record.database_selector = { delay: 2.seconds }
- # config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
- # config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
-end
diff --git a/spec/integration/rails_6.0.2.1/config/environments/test.rb b/spec/integration/rails_6.0.2.1/config/environments/test.rb
deleted file mode 100644
index 470dee4be..000000000
--- a/spec/integration/rails_6.0.2.1/config/environments/test.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-# The test environment is used exclusively to run your application's
-# test suite. You never need to work with it otherwise. Remember that
-# your test database is "scratch space" for the test suite and is wiped
-# and recreated between test runs. Don't rely on the data there!
-
-Rails.application.configure do
- # Settings specified here will take precedence over those in config/application.rb.
-
- config.cache_classes = true
-
- # Do not eager load code on boot. This avoids loading your whole application
- # just for the purpose of running a single test. If you are using a tool that
- # preloads Rails for running tests, you may have to set it to true.
- config.eager_load = false
-
- # Configure public file server for tests with Cache-Control for performance.
- config.public_file_server.enabled = true
- config.public_file_server.headers = {
- 'Cache-Control' => "public, max-age=#{1.hour.to_i}"
- }
-
- # Show full error reports and disable caching.
- config.consider_all_requests_local = true
- config.action_controller.perform_caching = false
- config.cache_store = :null_store
-
- # Raise exceptions instead of rendering exception templates.
- config.action_dispatch.show_exceptions = false
-
- # Disable request forgery protection in test environment.
- config.action_controller.allow_forgery_protection = false
-
- # Store uploaded files on the local file system in a temporary directory.
- config.active_storage.service = :test
-
- config.action_mailer.perform_caching = false
-
- # Tell Action Mailer not to deliver emails to the real world.
- # The :test delivery method accumulates sent emails in the
- # ActionMailer::Base.deliveries array.
- config.action_mailer.delivery_method = :test
-
- # Print deprecation notices to the stderr.
- config.active_support.deprecation = :stderr
-
- # Raises error for missing translations.
- # config.action_view.raise_on_missing_translations = true
-end
diff --git a/spec/integration/rails_6.0.2.1/config/initializers/application_controller_renderer.rb b/spec/integration/rails_6.0.2.1/config/initializers/application_controller_renderer.rb
deleted file mode 100644
index 89d2efab2..000000000
--- a/spec/integration/rails_6.0.2.1/config/initializers/application_controller_renderer.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# ActiveSupport::Reloader.to_prepare do
-# ApplicationController.renderer.defaults.merge!(
-# http_host: 'example.org',
-# https: false
-# )
-# end
diff --git a/spec/integration/rails_6.0.2.1/config/initializers/backtrace_silencers.rb b/spec/integration/rails_6.0.2.1/config/initializers/backtrace_silencers.rb
deleted file mode 100644
index 59385cdf3..000000000
--- a/spec/integration/rails_6.0.2.1/config/initializers/backtrace_silencers.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
-# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
-
-# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
-# Rails.backtrace_cleaner.remove_silencers!
diff --git a/spec/integration/rails_6.0.2.1/config/initializers/content_security_policy.rb b/spec/integration/rails_6.0.2.1/config/initializers/content_security_policy.rb
deleted file mode 100644
index 41c43016f..000000000
--- a/spec/integration/rails_6.0.2.1/config/initializers/content_security_policy.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Define an application-wide content security policy
-# For further information see the following documentation
-# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
-
-# Rails.application.config.content_security_policy do |policy|
-# policy.default_src :self, :https
-# policy.font_src :self, :https, :data
-# policy.img_src :self, :https, :data
-# policy.object_src :none
-# policy.script_src :self, :https
-# policy.style_src :self, :https
-
-# # Specify URI for violation reports
-# # policy.report_uri "/csp-violation-report-endpoint"
-# end
-
-# If you are using UJS then enable automatic nonce generation
-# Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) }
-
-# Set the nonce only to specific directives
-# Rails.application.config.content_security_policy_nonce_directives = %w(script-src)
-
-# Report CSP violations to a specified URI
-# For further information see the following documentation:
-# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
-# Rails.application.config.content_security_policy_report_only = true
diff --git a/spec/integration/rails_6.0.2.1/config/initializers/cookies_serializer.rb b/spec/integration/rails_6.0.2.1/config/initializers/cookies_serializer.rb
deleted file mode 100644
index 5a6a32d37..000000000
--- a/spec/integration/rails_6.0.2.1/config/initializers/cookies_serializer.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Specify a serializer for the signed and encrypted cookie jars.
-# Valid options are :json, :marshal, and :hybrid.
-Rails.application.config.action_dispatch.cookies_serializer = :json
diff --git a/spec/integration/rails_6.0.2.1/config/initializers/filter_parameter_logging.rb b/spec/integration/rails_6.0.2.1/config/initializers/filter_parameter_logging.rb
deleted file mode 100644
index 4a994e1e7..000000000
--- a/spec/integration/rails_6.0.2.1/config/initializers/filter_parameter_logging.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Configure sensitive parameters which will be filtered from the log file.
-Rails.application.config.filter_parameters += [:password]
diff --git a/spec/integration/rails_6.0.2.1/config/initializers/inflections.rb b/spec/integration/rails_6.0.2.1/config/initializers/inflections.rb
deleted file mode 100644
index ac033bf9d..000000000
--- a/spec/integration/rails_6.0.2.1/config/initializers/inflections.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Add new inflection rules using the following format. Inflections
-# are locale specific, and you may define rules for as many different
-# locales as you wish. All of these examples are active by default:
-# ActiveSupport::Inflector.inflections(:en) do |inflect|
-# inflect.plural /^(ox)$/i, '\1en'
-# inflect.singular /^(ox)en/i, '\1'
-# inflect.irregular 'person', 'people'
-# inflect.uncountable %w( fish sheep )
-# end
-
-# These inflection rules are supported but not enabled by default:
-# ActiveSupport::Inflector.inflections(:en) do |inflect|
-# inflect.acronym 'RESTful'
-# end
diff --git a/spec/integration/rails_6.0.2.1/config/initializers/mime_types.rb b/spec/integration/rails_6.0.2.1/config/initializers/mime_types.rb
deleted file mode 100644
index dc1899682..000000000
--- a/spec/integration/rails_6.0.2.1/config/initializers/mime_types.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Add new mime types for use in respond_to blocks:
-# Mime::Type.register "text/richtext", :rtf
diff --git a/spec/integration/rails_6.0.2.1/config/initializers/wrap_parameters.rb b/spec/integration/rails_6.0.2.1/config/initializers/wrap_parameters.rb
deleted file mode 100644
index bbfc3961b..000000000
--- a/spec/integration/rails_6.0.2.1/config/initializers/wrap_parameters.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# This file contains settings for ActionController::ParamsWrapper which
-# is enabled by default.
-
-# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
-ActiveSupport.on_load(:action_controller) do
- wrap_parameters format: [:json]
-end
-
-# To enable root element in JSON for ActiveRecord objects.
-# ActiveSupport.on_load(:active_record) do
-# self.include_root_in_json = true
-# end
diff --git a/spec/integration/rails_6.0.2.1/config/locales/en.yml b/spec/integration/rails_6.0.2.1/config/locales/en.yml
deleted file mode 100644
index cf9b342d0..000000000
--- a/spec/integration/rails_6.0.2.1/config/locales/en.yml
+++ /dev/null
@@ -1,33 +0,0 @@
-# Files in the config/locales directory are used for internationalization
-# and are automatically loaded by Rails. If you want to use locales other
-# than English, add the necessary files in this directory.
-#
-# To use the locales, use `I18n.t`:
-#
-# I18n.t 'hello'
-#
-# In views, this is aliased to just `t`:
-#
-# <%= t('hello') %>
-#
-# To use a different locale, set it with `I18n.locale`:
-#
-# I18n.locale = :es
-#
-# This would use the information in config/locales/es.yml.
-#
-# The following keys must be escaped otherwise they will not be retrieved by
-# the default I18n backend:
-#
-# true, false, on, off, yes, no
-#
-# Instead, surround them with single quotes.
-#
-# en:
-# 'true': 'foo'
-#
-# To learn more, please read the Rails Internationalization guide
-# available at https://guides.rubyonrails.org/i18n.html.
-
-en:
- hello: "Hello world"
diff --git a/spec/integration/rails_6.0.2.1/config/multi-database.yml b/spec/integration/rails_6.0.2.1/config/multi-database.yml
deleted file mode 100644
index 1dbe6d6a9..000000000
--- a/spec/integration/rails_6.0.2.1/config/multi-database.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-# SQLite. Versions 3.8.0 and up are supported.
-# gem install sqlite3
-#
-# Ensure the SQLite 3 gem is defined in your Gemfile
-# gem 'sqlite3'
-#
-default: &default
- adapter: sqlite3
- pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
- timeout: 5000
-
-development:
- primary:
- <<: *default
- database: db/development.sqlite3
- secondary:
- <<: *default
- database: db/development-secondary.sqlite3
-
-# Warning: The database defined as "test" will be erased and
-# re-generated from your development database when you run "rake".
-# Do not set this db to the same as development or production.
-test:
- primary:
- <<: *default
- database: db/test.sqlite3
- secondary:
- <<: *default
- database: db/test-secondary.sqlite3
-
-production:
- primary:
- <<: *default
- database: db/production.sqlite3
- secondary:
- <<: *default
- database: db/production-secondary.sqlite3
diff --git a/spec/integration/rails_6.0.2.1/config/puma.rb b/spec/integration/rails_6.0.2.1/config/puma.rb
deleted file mode 100644
index 5ed443774..000000000
--- a/spec/integration/rails_6.0.2.1/config/puma.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-# Puma can serve each request in a thread from an internal thread pool.
-# The `threads` method setting takes two numbers: a minimum and maximum.
-# Any libraries that use thread pools should be configured to match
-# the maximum value specified for Puma. Default is set to 5 threads for minimum
-# and maximum; this matches the default thread size of Active Record.
-#
-max_threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
-min_threads_count = ENV.fetch("RAILS_MIN_THREADS") { max_threads_count }
-threads min_threads_count, max_threads_count
-
-# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
-#
-port ENV.fetch("PORT") { 3000 }
-
-# Specifies the `environment` that Puma will run in.
-#
-environment ENV.fetch("RAILS_ENV") { "development" }
-
-# Specifies the `pidfile` that Puma will use.
-pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
-
-# Specifies the number of `workers` to boot in clustered mode.
-# Workers are forked web server processes. If using threads and workers together
-# the concurrency of the application would be max `threads` * `workers`.
-# Workers do not work on JRuby or Windows (both of which do not support
-# processes).
-#
-# workers ENV.fetch("WEB_CONCURRENCY") { 2 }
-
-# Use the `preload_app!` method when specifying a `workers` number.
-# This directive tells Puma to first boot the application and load code
-# before forking the application. This takes advantage of Copy On Write
-# process behavior so workers use less memory.
-#
-# preload_app!
-
-# Allow puma to be restarted by `rails restart` command.
-plugin :tmp_restart
diff --git a/spec/integration/rails_6.0.2.1/config/routes.rb b/spec/integration/rails_6.0.2.1/config/routes.rb
deleted file mode 100644
index b735f52f4..000000000
--- a/spec/integration/rails_6.0.2.1/config/routes.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-Rails.application.routes.draw do
- # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
- resources :tasks
-end
diff --git a/spec/integration/rails_6.0.2.1/config/storage.yml b/spec/integration/rails_6.0.2.1/config/storage.yml
deleted file mode 100644
index d32f76e8f..000000000
--- a/spec/integration/rails_6.0.2.1/config/storage.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-test:
- service: Disk
- root: <%= Rails.root.join("tmp/storage") %>
-
-local:
- service: Disk
- root: <%= Rails.root.join("storage") %>
-
-# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
-# amazon:
-# service: S3
-# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
-# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
-# region: us-east-1
-# bucket: your_own_bucket
-
-# Remember not to checkin your GCS keyfile to a repository
-# google:
-# service: GCS
-# project: your_project
-# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %>
-# bucket: your_own_bucket
-
-# Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
-# microsoft:
-# service: AzureStorage
-# storage_account_name: your_account_name
-# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
-# container: your_container_name
-
-# mirror:
-# service: Mirror
-# primary: local
-# mirrors: [ amazon, google, microsoft ]
diff --git a/spec/integration/rails_6.0.2.1/db/migrate/20200201204456_create_tasks.rb b/spec/integration/rails_6.0.2.1/db/migrate/20200201204456_create_tasks.rb
deleted file mode 100644
index 42e0141d1..000000000
--- a/spec/integration/rails_6.0.2.1/db/migrate/20200201204456_create_tasks.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-class CreateTasks < ActiveRecord::Migration[6.0]
- def change
- create_table :tasks do |t|
- t.string :content
- t.integer :count, default: 0
- t.boolean :status, default: false
-
- t.timestamps
- end
- end
-end
diff --git a/spec/integration/rails_6.0.2.1/db/schema.rb b/spec/integration/rails_6.0.2.1/db/schema.rb
deleted file mode 100644
index 69b014dfd..000000000
--- a/spec/integration/rails_6.0.2.1/db/schema.rb
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is auto-generated from the current state of the database. Instead
-# of editing this file, please use the migrations feature of Active Record to
-# incrementally modify your database, and then regenerate this schema definition.
-#
-# This file is the source Rails uses to define your schema when running `rails
-# db:schema:load`. When creating a new database, `rails db:schema:load` tends to
-# be faster and is potentially less error prone than running all of your
-# migrations from scratch. Old migrations may fail to apply correctly if those
-# migrations use external dependencies or application code.
-#
-# It's strongly recommended that you check this file into your version control system.
-
-ActiveRecord::Schema.define(version: 2020_02_01_204456) do
-
- create_table "tasks", force: :cascade do |t|
- t.string "content"
- t.integer "count", default: 0
- t.boolean "status", default: false
- t.datetime "created_at", precision: 6, null: false
- t.datetime "updated_at", precision: 6, null: false
- end
-
-end
diff --git a/spec/integration/rails_6.0.2.1/db/seeds.rb b/spec/integration/rails_6.0.2.1/db/seeds.rb
deleted file mode 100644
index 1beea2acc..000000000
--- a/spec/integration/rails_6.0.2.1/db/seeds.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-# This file should contain all the record creation needed to seed the database with its default values.
-# The data can then be loaded with the rails db:seed command (or created alongside the database with db:setup).
-#
-# Examples:
-#
-# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
-# Character.create(name: 'Luke', movie: movies.first)
diff --git a/spec/integration/rails_6.0.2.1/lib/assets/.keep b/spec/integration/rails_6.0.2.1/lib/assets/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/lib/tasks/.keep b/spec/integration/rails_6.0.2.1/lib/tasks/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/log/.keep b/spec/integration/rails_6.0.2.1/log/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/public/404.html b/spec/integration/rails_6.0.2.1/public/404.html
deleted file mode 100644
index 2be3af26f..000000000
--- a/spec/integration/rails_6.0.2.1/public/404.html
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
- The page you were looking for doesn't exist (404)
-
-
-
-
-
-
-
-
-
The page you were looking for doesn't exist.
-
You may have mistyped the address or the page may have moved.
-
-
If you are the application owner check the logs for more information.
-
-
-
diff --git a/spec/integration/rails_6.0.2.1/public/422.html b/spec/integration/rails_6.0.2.1/public/422.html
deleted file mode 100644
index c08eac0d1..000000000
--- a/spec/integration/rails_6.0.2.1/public/422.html
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
- The change you wanted was rejected (422)
-
-
-
-
-
-
-
-
-
The change you wanted was rejected.
-
Maybe you tried to change something you didn't have access to.
-
-
If you are the application owner check the logs for more information.
-
-
-
diff --git a/spec/integration/rails_6.0.2.1/public/500.html b/spec/integration/rails_6.0.2.1/public/500.html
deleted file mode 100644
index 78a030af2..000000000
--- a/spec/integration/rails_6.0.2.1/public/500.html
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
- We're sorry, but something went wrong (500)
-
-
-
-
-
-
-
-
-
We're sorry, but something went wrong.
-
-
If you are the application owner check the logs for more information.
-
-
-
diff --git a/spec/integration/rails_6.0.2.1/public/apple-touch-icon-precomposed.png b/spec/integration/rails_6.0.2.1/public/apple-touch-icon-precomposed.png
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/public/apple-touch-icon.png b/spec/integration/rails_6.0.2.1/public/apple-touch-icon.png
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/public/favicon.ico b/spec/integration/rails_6.0.2.1/public/favicon.ico
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/public/robots.txt b/spec/integration/rails_6.0.2.1/public/robots.txt
deleted file mode 100644
index c19f78ab6..000000000
--- a/spec/integration/rails_6.0.2.1/public/robots.txt
+++ /dev/null
@@ -1 +0,0 @@
-# See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
diff --git a/spec/integration/rails_6.0.2.1/storage/.keep b/spec/integration/rails_6.0.2.1/storage/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/test/application_system_test_case.rb b/spec/integration/rails_6.0.2.1/test/application_system_test_case.rb
deleted file mode 100644
index d19212abd..000000000
--- a/spec/integration/rails_6.0.2.1/test/application_system_test_case.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require "test_helper"
-
-class ApplicationSystemTestCase < ActionDispatch::SystemTestCase
- driven_by :selenium, using: :chrome, screen_size: [1400, 1400]
-end
diff --git a/spec/integration/rails_6.0.2.1/test/channels/application_cable/connection_test.rb b/spec/integration/rails_6.0.2.1/test/channels/application_cable/connection_test.rb
deleted file mode 100644
index 800405f15..000000000
--- a/spec/integration/rails_6.0.2.1/test/channels/application_cable/connection_test.rb
+++ /dev/null
@@ -1,11 +0,0 @@
-require "test_helper"
-
-class ApplicationCable::ConnectionTest < ActionCable::Connection::TestCase
- # test "connects with cookies" do
- # cookies.signed[:user_id] = 42
- #
- # connect
- #
- # assert_equal connection.user_id, "42"
- # end
-end
diff --git a/spec/integration/rails_6.0.2.1/test/controllers/.keep b/spec/integration/rails_6.0.2.1/test/controllers/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/test/fixtures/.keep b/spec/integration/rails_6.0.2.1/test/fixtures/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/test/fixtures/files/.keep b/spec/integration/rails_6.0.2.1/test/fixtures/files/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/test/fixtures/tasks.yml b/spec/integration/rails_6.0.2.1/test/fixtures/tasks.yml
deleted file mode 100644
index c9b9807d6..000000000
--- a/spec/integration/rails_6.0.2.1/test/fixtures/tasks.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
-
-one:
- content: MyString
- count: 1
- status: false
-
-two:
- content: MyString
- count: 1
- status: false
diff --git a/spec/integration/rails_6.0.2.1/test/helpers/.keep b/spec/integration/rails_6.0.2.1/test/helpers/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/test/integration/.keep b/spec/integration/rails_6.0.2.1/test/integration/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/test/mailers/.keep b/spec/integration/rails_6.0.2.1/test/mailers/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/test/models/.keep b/spec/integration/rails_6.0.2.1/test/models/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/test/models/task_test.rb b/spec/integration/rails_6.0.2.1/test/models/task_test.rb
deleted file mode 100644
index 3ca215970..000000000
--- a/spec/integration/rails_6.0.2.1/test/models/task_test.rb
+++ /dev/null
@@ -1,7 +0,0 @@
-require 'test_helper'
-
-class TaskTest < ActiveSupport::TestCase
- # test "the truth" do
- # assert true
- # end
-end
diff --git a/spec/integration/rails_6.0.2.1/test/system/.keep b/spec/integration/rails_6.0.2.1/test/system/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/test/test_helper.rb b/spec/integration/rails_6.0.2.1/test/test_helper.rb
deleted file mode 100644
index d5300f88c..000000000
--- a/spec/integration/rails_6.0.2.1/test/test_helper.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-ENV['RAILS_ENV'] ||= 'test'
-require_relative '../config/environment'
-require 'rails/test_help'
-
-class ActiveSupport::TestCase
- # Run tests in parallel with specified workers
- parallelize(workers: :number_of_processors)
-
- # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
- fixtures :all
-
- # Add more helper methods to be used by all tests here...
-end
diff --git a/spec/integration/rails_6.0.2.1/tmp/.keep b/spec/integration/rails_6.0.2.1/tmp/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1/vendor/.keep b/spec/integration/rails_6.0.2.1/vendor/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/spec/integration/rails_6.0.2.1_spec.rb b/spec/integration/rails_6.0.2.1_spec.rb
deleted file mode 100644
index 413ebddae..000000000
--- a/spec/integration/rails_6.0.2.1_spec.rb
+++ /dev/null
@@ -1,200 +0,0 @@
-require 'bundler'
-require 'rspec'
-require 'git'
-require_relative 'integration_helper'
-
-describe 'Integration testing on Rails 6.0.2.1', if: IntegrationHelper.able_to_run?(__FILE__, RUBY_VERSION) do
- ::RAILS_6_0_APP_NAME = 'rails_6.0.2.1'.freeze
- ::RAILS_6_0_PROJECT_PATH = File.expand_path('../..', __dir__).freeze
- ::RAILS_6_0_APP_PATH = File.expand_path(RAILS_6_0_APP_NAME, __dir__).freeze
-
- let!(:git) { Git.open(RAILS_6_0_PROJECT_PATH) }
- let(:task_model) do
- patch = <<~PATCH
- +# == Schema Information
- +#
- +# Table name: tasks
- +#
- +# id :integer not null, primary key
- +# content :string
- +# count :integer default(0)
- +# status :boolean default(FALSE)
- +# created_at :datetime not null
- +# updated_at :datetime not null
- +#
- PATCH
-
- path = 'app/models/task.rb'
- {
- path: include(path),
- patch: include(patch)
- }
- end
- let(:task_test) do
- patch = <<~PATCH
- +# == Schema Information
- +#
- +# Table name: tasks
- +#
- +# id :integer not null, primary key
- +# content :string
- +# count :integer default(0)
- +# status :boolean default(FALSE)
- +# created_at :datetime not null
- +# updated_at :datetime not null
- +#
- PATCH
-
- path = 'test/models/task_test.rb'
- {
- path: include(path),
- patch: include(patch)
- }
- end
- let(:task_fixture) do
- patch = <<~PATCH
- +# == Schema Information
- +#
- +# Table name: tasks
- +#
- +# id :integer not null, primary key
- +# content :string
- +# count :integer default(0)
- +# status :boolean default(FALSE)
- +# created_at :datetime not null
- +# updated_at :datetime not null
- +#
- PATCH
-
- path = 'test/fixtures/tasks.yml'
- {
- path: include(path),
- patch: include(patch)
- }
- end
-
- before(:all) do
- Bundler.with_clean_env do
- Dir.chdir RAILS_6_0_APP_PATH do
- puts `bundle install`
- puts `bin/rails db:migrate`
- end
- end
- end
-
- around(:each) do |example|
- Bundler.with_clean_env do
- Dir.chdir RAILS_6_0_APP_PATH do
- example.run
- end
- end
- end
-
- after(:each) do
- git.reset_hard
- end
-
- describe 'annotate --models' do
- let(:command) { 'bundle exec annotate --models' }
-
- it 'annotate models' do
- expect(git.diff.any?).to be_falsy
-
- puts `#{command}`
-
- expect(git.diff.entries).to contain_exactly(
- an_object_having_attributes(task_model),
- an_object_having_attributes(task_test),
- an_object_having_attributes(task_fixture)
- )
- end
- end
-
- describe 'annotate --routes' do
- let(:command) { 'bundle exec annotate --routes' }
-
- let(:task_routes) do
- task_routes_diff = <<-DIFF
-+# == Route Map
-+#
-+# Prefix Verb URI Pattern Controller#Action
-+# tasks GET /tasks(.:format) tasks#index
-+# POST /tasks(.:format) tasks#create
-+# new_task GET /tasks/new(.:format) tasks#new
-+# edit_task GET /tasks/:id/edit(.:format) tasks#edit
-+# task GET /tasks/:id(.:format) tasks#show
-+# PATCH /tasks/:id(.:format) tasks#update
-+# PUT /tasks/:id(.:format) tasks#update
-+# DELETE /tasks/:id(.:format) tasks#destroy
- DIFF
-
- default_routes_diff = <<-DIFF
-+# rails_mandrill_inbound_emails POST /rails/action_mailbox/mandrill/inbound_emails(.:format) action_mailbox/ingresses/mandrill/inbound_emails#create
-+# rails_postmark_inbound_emails POST /rails/action_mailbox/postmark/inbound_emails(.:format) action_mailbox/ingresses/postmark/inbound_emails#create
-+# rails_relay_inbound_emails POST /rails/action_mailbox/relay/inbound_emails(.:format) action_mailbox/ingresses/relay/inbound_emails#create
-+# rails_sendgrid_inbound_emails POST /rails/action_mailbox/sendgrid/inbound_emails(.:format) action_mailbox/ingresses/sendgrid/inbound_emails#create
-+# rails_mailgun_inbound_emails POST /rails/action_mailbox/mailgun/inbound_emails/mime(.:format) action_mailbox/ingresses/mailgun/inbound_emails#create
-+# rails_conductor_inbound_emails GET /rails/conductor/action_mailbox/inbound_emails(.:format) rails/conductor/action_mailbox/inbound_emails#index
-+# POST /rails/conductor/action_mailbox/inbound_emails(.:format) rails/conductor/action_mailbox/inbound_emails#create
-+# new_rails_conductor_inbound_email GET /rails/conductor/action_mailbox/inbound_emails/new(.:format) rails/conductor/action_mailbox/inbound_emails#new
-+# edit_rails_conductor_inbound_email GET /rails/conductor/action_mailbox/inbound_emails/:id/edit(.:format) rails/conductor/action_mailbox/inbound_emails#edit
-+# rails_conductor_inbound_email GET /rails/conductor/action_mailbox/inbound_emails/:id(.:format) rails/conductor/action_mailbox/inbound_emails#show
-+# PATCH /rails/conductor/action_mailbox/inbound_emails/:id(.:format) rails/conductor/action_mailbox/inbound_emails#update
-+# PUT /rails/conductor/action_mailbox/inbound_emails/:id(.:format) rails/conductor/action_mailbox/inbound_emails#update
-+# DELETE /rails/conductor/action_mailbox/inbound_emails/:id(.:format) rails/conductor/action_mailbox/inbound_emails#destroy
-+# rails_conductor_inbound_email_reroute POST /rails/conductor/action_mailbox/:inbound_email_id/reroute(.:format) rails/conductor/action_mailbox/reroutes#create
-+# rails_service_blob GET /rails/active_storage/blobs/:signed_id/*filename(.:format) active_storage/blobs#show
-+# rails_blob_representation GET /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show
-+# rails_disk_service GET /rails/active_storage/disk/:encoded_key/*filename(.:format) active_storage/disk#show
-+# update_rails_disk_service PUT /rails/active_storage/disk/:encoded_token(.:format) active_storage/disk#update
-+# rails_direct_uploads POST /rails/active_storage/direct_uploads(.:format) active_storage/direct_uploads#create
- DIFF
-
-
- path = 'config/routes.rb'
- {
- path: include(path),
- patch: include(task_routes_diff, default_routes_diff)
- }
- end
-
- it 'annotate routes.rb' do
- expect(git.diff.any?).to be_falsy
-
- puts `#{command}`
-
- expect(git.diff.entries).to contain_exactly(an_object_having_attributes(task_routes))
- end
- end
-
- describe 'rails g annotate:install' do
- let(:command) { 'bin/rails g annotate:install' }
- let(:rake_file_path) { 'lib/tasks/auto_annotate_models.rake' }
- let(:full_path) { File.expand_path(rake_file_path) }
-
- after(:each) do
- File.delete(full_path)
- end
-
- it 'generates the rake file' do
- expect { `#{command}` }.to change { File.exist?(rake_file_path) }.from(false).to(true)
- end
-
- context 'with multi-db environment' do
- let(:migrate_command) { 'bin/rails db:migrate:primary' }
-
- it 'hooks database-specific commands and annotates models' do
- expect(git.diff.any?).to be_falsy
-
- system({ 'MULTI_DB' => 'true' }, command)
- system({ 'MULTI_DB' => 'true' }, migrate_command)
-
- expect(git.diff.entries).to contain_exactly(
- an_object_having_attributes(task_model),
- an_object_having_attributes(task_test),
- an_object_having_attributes(task_fixture)
- )
- end
- end
- end
-end
diff --git a/spec/lib/annotate/annotate_models_spec.rb b/spec/lib/annotate/annotate_models_spec.rb
index c813139a2..096474610 100644
--- a/spec/lib/annotate/annotate_models_spec.rb
+++ b/spec/lib/annotate/annotate_models_spec.rb
@@ -19,7 +19,7 @@
'# frozen_string_literal: true',
'#frozen_string_literal: false',
'# -*- frozen_string_literal : true -*-'
- ].freeze
+ ].freeze unless const_defined?(:MAGIC_COMMENTS)
def mock_index(name, params = {})
double('IndexKeyDefinition',
@@ -41,16 +41,26 @@ def mock_foreign_key(name, from_column, to_table, to_column = 'id', constraints
on_update: constraints[:on_update])
end
- def mock_connection(indexes = [], foreign_keys = [])
+ def mock_check_constraint(name, expression)
+ double('CheckConstraintDefinition',
+ name: name,
+ expression: expression)
+ end
+
+ def mock_connection(indexes = [], foreign_keys = [], check_constraints = [])
double('Conn',
indexes: indexes,
foreign_keys: foreign_keys,
- supports_foreign_keys?: true)
+ check_constraints: check_constraints,
+ supports_foreign_keys?: true,
+ supports_check_constraints?: true,
+ table_exists?: true)
end
- def mock_class(table_name, primary_key, columns, indexes = [], foreign_keys = [])
+ # rubocop:disable Metrics/ParameterLists
+ def mock_class(table_name, primary_key, columns, indexes = [], foreign_keys = [], check_constraints = [])
options = {
- connection: mock_connection(indexes, foreign_keys),
+ connection: mock_connection(indexes, foreign_keys, check_constraints),
table_exists?: true,
table_name: table_name,
primary_key: primary_key,
@@ -62,6 +72,7 @@ def mock_class(table_name, primary_key, columns, indexes = [], foreign_keys = []
double('An ActiveRecord class', options)
end
+ # rubocop:enable Metrics/ParameterLists
def mock_column(name, type, options = {})
default_options = {
@@ -153,7 +164,11 @@ def mock_column(name, type, options = {})
end
before :each do
- AnnotateModels.send(:parse_options, options)
+ AnnotateModels.parse_options(options)
+ end
+
+ after :each do
+ AnnotateModels.parse_options({ skip_subdirectory_model_load: false })
end
describe '@root_dir' do
@@ -217,7 +232,7 @@ def mock_column(name, type, options = {})
end
let :klass do
- mock_class(:users, primary_key, columns, indexes, foreign_keys)
+ mock_class(:users, primary_key, columns, indexes, foreign_keys, check_constraints)
end
let :indexes do
@@ -228,6 +243,10 @@ def mock_column(name, type, options = {})
[]
end
+ let :check_constraints do
+ []
+ end
+
context 'when option is not present' do
let :options do
{}
@@ -387,7 +406,7 @@ def mock_column(name, type, options = {})
end
end
- context 'with Globalize gem' do
+ context 'with Globalize gem' do # rubocop:disable RSpec/MultipleMemoizedHelpers
let :translation_klass do
double('Folder::Post::Translation',
to_s: 'Folder::Post::Translation',
@@ -520,7 +539,7 @@ def mock_column(name, type, options = {})
end
end
- context 'when one of indexes includes orderd index key' do
+ context 'when one of indexes includes ordered index key' do
let :columns do
[
mock_column("id", :integer),
@@ -676,6 +695,24 @@ def mock_column(name, type, options = {})
it 'returns schema info without index information' do
is_expected.to eq expected_result
end
+
+ # rubocop:disable RSpec/NestedGroups
+ context 'when the unprefixed table name does not exist' do
+ let :klass do
+ mock_class(:users, primary_key, columns, indexes, foreign_keys).tap do |mock_klass|
+ allow(mock_klass).to receive(:table_name_prefix).and_return('my_prefix_')
+ allow(mock_klass.connection).to receive(:table_exists?).with('users').and_return(false)
+ allow(mock_klass.connection).to receive(:indexes).with('users').and_raise('error fetching indexes on nonexistent table')
+ end
+ end
+
+ it 'returns schema info without index information' do
+ is_expected.to eq expected_result
+ expect(klass).to have_received(:table_name_prefix).at_least(:once)
+ expect(klass.connection).to have_received(:table_exists?).with('users')
+ end
+ end
+ # rubocop:enable RSpec/NestedGroups
end
end
@@ -752,6 +789,82 @@ def mock_column(name, type, options = {})
end
end
+ context 'when check constraints exist' do
+ let :columns do
+ [
+ mock_column(:id, :integer),
+ mock_column(:age, :integer)
+ ]
+ end
+
+ context 'when option "show_check_constraints" is true' do
+ let :options do
+ { show_check_constraints: true }
+ end
+
+ context 'when check constraints are defined' do
+ let :check_constraints do
+ [
+ mock_check_constraint('alive', 'age < 150'),
+ mock_check_constraint('must_be_adult', 'age >= 18'),
+ mock_check_constraint('missing_expression', nil),
+ mock_check_constraint('multiline_test', <<~SQL)
+ CASE
+ WHEN (age >= 18) THEN (age <= 21)
+ ELSE true
+ END
+ SQL
+ ]
+ end
+
+ let :expected_result do
+ <<~EOS
+ # Schema Info
+ #
+ # Table name: users
+ #
+ # id :integer not null, primary key
+ # age :integer not null
+ #
+ # Check Constraints
+ #
+ # alive (age < 150)
+ # missing_expression
+ # multiline_test (CASE WHEN (age >= 18) THEN (age <= 21) ELSE true END)
+ # must_be_adult (age >= 18)
+ #
+ EOS
+ end
+
+ it 'returns schema info with check constraint information' do
+ is_expected.to eq expected_result
+ end
+ end
+
+ context 'when check constraint is not defined' do
+ let :check_constraints do
+ []
+ end
+
+ let :expected_result do
+ <<~EOS
+ # Schema Info
+ #
+ # Table name: users
+ #
+ # id :integer not null, primary key
+ # age :integer not null
+ #
+ EOS
+ end
+
+ it 'returns schema info without check constraint information' do
+ is_expected.to eq expected_result
+ end
+ end
+ end
+ end
+
context 'when foreign keys exist' do
let :columns do
[
@@ -1195,6 +1308,146 @@ def mock_column(name, type, options = {})
end
end
end
+
+ context 'when "with_comment_column" is specified in options' do
+ let :options do
+ { with_comment_column: 'yes' }
+ end
+
+ context 'when columns have comments' do
+ let :columns do
+ [
+ mock_column(:id, :integer, limit: 8, comment: 'ID'),
+ mock_column(:active, :boolean, limit: 1, comment: 'Active'),
+ mock_column(:name, :string, limit: 50, comment: 'Name'),
+ mock_column(:notes, :text, limit: 55, comment: 'Notes'),
+ mock_column(:no_comment, :text, limit: 20, comment: nil)
+ ]
+ end
+
+ let :expected_result do
+ <<~EOS
+ # Schema Info
+ #
+ # Table name: users
+ #
+ # id :integer not null, primary key ID
+ # active :boolean not null Active
+ # name :string(50) not null Name
+ # notes :text(55) not null Notes
+ # no_comment :text(20) not null
+ #
+ EOS
+ end
+
+ it 'works with option "with_comment_column"' do
+ is_expected.to eq expected_result
+ end
+ end
+
+ context 'when columns have multibyte comments' do
+ let :columns do
+ [
+ mock_column(:id, :integer, limit: 8, comment: 'ID'),
+ mock_column(:active, :boolean, limit: 1, comment: 'ACTIVE'),
+ mock_column(:name, :string, limit: 50, comment: 'NAME'),
+ mock_column(:notes, :text, limit: 55, comment: 'NOTES'),
+ mock_column(:cyrillic, :text, limit: 30, comment: 'Кириллица'),
+ mock_column(:japanese, :text, limit: 60, comment: '熊本大学 イタリア 宝島'),
+ mock_column(:arabic, :text, limit: 20, comment: 'لغة'),
+ mock_column(:no_comment, :text, limit: 20, comment: nil),
+ mock_column(:location, :geometry_collection, limit: nil, comment: nil)
+ ]
+ end
+
+ let :expected_result do
+ <<~EOS
+ # Schema Info
+ #
+ # Table name: users
+ #
+ # id :integer not null, primary key ID
+ # active :boolean not null ACTIVE
+ # name :string(50) not null NAME
+ # notes :text(55) not null NOTES
+ # cyrillic :text(30) not null Кириллица
+ # japanese :text(60) not null 熊本大学 イタリア 宝島
+ # arabic :text(20) not null لغة
+ # no_comment :text(20) not null
+ # location :geometry_collect not null
+ #
+ EOS
+ end
+
+ it 'works with option "with_comment_column"' do
+ is_expected.to eq expected_result
+ end
+ end
+
+ context 'when columns have multiline comments' do
+ let :columns do
+ [
+ mock_column(:id, :integer, limit: 8, comment: 'ID'),
+ mock_column(:notes, :text, limit: 55, comment: "Notes.\nMay include things like notes."),
+ mock_column(:no_comment, :text, limit: 20, comment: nil)
+ ]
+ end
+
+ let :expected_result do
+ <<~EOS
+ # Schema Info
+ #
+ # Table name: users
+ #
+ # id :integer not null, primary key ID
+ # notes :text(55) not null Notes.\\nMay include things like notes.
+ # no_comment :text(20) not null
+ #
+ EOS
+ end
+
+ it 'works with option "with_comment_column"' do
+ is_expected.to eq expected_result
+ end
+ end
+
+ context 'when geometry columns are included' do
+ let :columns do
+ [
+ mock_column(:id, :integer, limit: 8),
+ mock_column(:active, :boolean, default: false, null: false),
+ mock_column(:geometry, :geometry,
+ geometric_type: 'Geometry', srid: 4326,
+ limit: { srid: 4326, type: 'geometry' }),
+ mock_column(:location, :geography,
+ geometric_type: 'Point', srid: 0,
+ limit: { srid: 0, type: 'geometry' }),
+ mock_column(:non_srid, :geography,
+ geometric_type: 'Point',
+ limit: { type: 'geometry' })
+ ]
+ end
+
+ let :expected_result do
+ <<~EOS
+ # Schema Info
+ #
+ # Table name: users
+ #
+ # id :integer not null, primary key
+ # active :boolean default(FALSE), not null
+ # geometry :geometry not null, geometry, 4326
+ # location :geography not null, point, 0
+ # non_srid :geography not null, point
+ #
+ EOS
+ end
+
+ it 'works with option "with_comment_column"' do
+ is_expected.to eq expected_result
+ end
+ end
+ end
end
end
end
@@ -1488,6 +1741,53 @@ def mock_column(name, type, options = {})
end
end
+ context 'when option "show_check_constraints" is true' do
+ let :options do
+ { format_markdown: true, show_check_constraints: true }
+ end
+
+ context 'when check constraints are defined' do
+ let :check_constraints do
+ [
+ mock_check_constraint('min_name_length', 'LENGTH(name) > 2'),
+ mock_check_constraint('missing_expression', nil),
+ mock_check_constraint('multiline_test', <<~SQL)
+ CASE
+ WHEN (age >= 18) THEN (age <= 21)
+ ELSE true
+ END
+ SQL
+ ]
+ end
+
+ let :expected_result do
+ <<~EOS
+ # == Schema Information
+ #
+ # Table name: `users`
+ #
+ # ### Columns
+ #
+ # Name | Type | Attributes
+ # ----------- | ------------------ | ---------------------------
+ # **`id`** | `integer` | `not null, primary key`
+ # **`name`** | `string(50)` | `not null`
+ #
+ # ### Check Constraints
+ #
+ # * `min_name_length`: `(LENGTH(name) > 2)`
+ # * `missing_expression`
+ # * `multiline_test`: `(CASE WHEN (age >= 18) THEN (age <= 21) ELSE true END)`
+ #
+ EOS
+ end
+
+ it 'returns schema info with check constraint information in Markdown format' do
+ is_expected.to eq expected_result
+ end
+ end
+ end
+
context 'when option "show_foreign_keys" is true' do
let :options do
{ format_markdown: true, show_foreign_keys: true }
@@ -1647,6 +1947,10 @@ def mock_column(name, type, options = {})
Annotate::Helpers.true?(ENV['show_complete_foreign_keys'])
end
+ after :each do
+ ENV.delete('show_complete_foreign_keys')
+ end
+
context 'when default value of "show_complete_foreign_keys" is not set' do
it 'returns false' do
is_expected.to be(false)
@@ -1658,14 +1962,14 @@ def mock_column(name, type, options = {})
Annotate.set_defaults('show_complete_foreign_keys' => 'true')
end
+ after do
+ Annotate.instance_variable_set('@has_set_defaults', false)
+ end
+
it 'returns true' do
is_expected.to be(true)
end
end
-
- after :each do
- ENV.delete('show_complete_foreign_keys')
- end
end
describe '.get_patterns' do
@@ -1815,8 +2119,14 @@ def mock_column(name, type, options = {})
end
describe '.get_model_class' do
- before :all do
- AnnotateModels.model_dir = Dir.mktmpdir('annotate_models')
+ before :each do
+ @model_dir = Dir.mktmpdir('annotate_models')
+ AnnotateModels.model_dir = @model_dir
+ create(filename, file_content)
+ end
+
+ after :each do
+ FileUtils.remove_dir(@model_dir, true)
end
# TODO: use 'files' gem instead
@@ -1829,10 +2139,6 @@ def create(filename, file_content)
end
end
- before :each do
- create(filename, file_content)
- end
-
let :klass do
AnnotateModels.get_model_class(File.join(AnnotateModels.model_dir[0], filename))
end
@@ -2113,7 +2419,9 @@ class Foo < ActiveRecord::Base
let :file_content_2 do
<<-EOS
- class Bar::Foo < ActiveRecord::Base
+ module Bar
+ class Foo < ActiveRecord::Base
+ end
end
EOS
end
@@ -2146,7 +2454,9 @@ class Foo < ActiveRecord::Base
let :file_content_2 do
<<-EOS
- class Bar::Foo < ActiveRecord::Base
+ module Bar
+ class Foo < ActiveRecord::Base
+ end
end
EOS
end
@@ -2163,6 +2473,7 @@ class Bar::Foo < ActiveRecord::Base
it 'attempts to load the model path without expanding if skip_subdirectory_model_load is false' do
allow(AnnotateModels).to receive(:skip_subdirectory_model_load).and_return(false)
full_path = File.join(AnnotateModels.model_dir[0], filename_2)
+ Kernel.load(full_path)
expect(File).to_not receive(:expand_path).with(full_path)
AnnotateModels.get_model_class(full_path)
end
@@ -2171,6 +2482,7 @@ class Bar::Foo < ActiveRecord::Base
$LOAD_PATH.unshift(AnnotateModels.model_dir[0])
allow(AnnotateModels).to receive(:skip_subdirectory_model_load).and_return(true)
full_path = File.join(AnnotateModels.model_dir[0], filename_2)
+ Kernel.load(full_path)
expect(File).to receive(:expand_path).with(full_path).and_call_original
AnnotateModels.get_model_class(full_path)
end
@@ -2218,6 +2530,10 @@ class Foo < ActiveRecord::Base
AnnotateModels.remove_annotation_of_file(path)
end
+ after :each do
+ FileUtils.remove_dir(tmpdir, true)
+ end
+
let :tmpdir do
Dir.mktmpdir('annotate_models')
end
@@ -2502,7 +2818,7 @@ class Foo < ActiveRecord::Base
end
describe 'annotating a file' do
- before do
+ before :each do
@model_dir = Dir.mktmpdir('annotate_models')
(@model_file_name, @file_content) = write_model 'user.rb', <<~EOS
class User < ActiveRecord::Base
@@ -2519,6 +2835,10 @@ class User < ActiveRecord::Base
Annotate::Helpers.reset_options(Annotate::Constants::ALL_ANNOTATE_OPTIONS)
end
+ after :each do
+ FileUtils.remove_dir(@model_dir, true)
+ end
+
def write_model(file_name, file_content)
fname = File.join(@model_dir, file_name)
FileUtils.mkdir_p(File.dirname(fname))
@@ -2531,7 +2851,7 @@ def annotate_one_file(options = {})
Annotate.set_defaults(options)
options = Annotate.setup_options(options)
AnnotateModels.annotate_one_file(@model_file_name, @schema_info, :position_in_class, options)
-
+ ensure
# Wipe settings so the next call will pick up new values...
Annotate.instance_variable_set('@has_set_defaults', false)
Annotate::Constants::POSITION_OPTIONS.each { |key| ENV[key.to_s] = '' }
diff --git a/spec/lib/annotate/annotate_routes_spec.rb b/spec/lib/annotate/annotate_routes_spec.rb
index a0ed118cc..2d27b7458 100644
--- a/spec/lib/annotate/annotate_routes_spec.rb
+++ b/spec/lib/annotate/annotate_routes_spec.rb
@@ -21,7 +21,7 @@
'# frozen_string_literal: true',
'#frozen_string_literal: false',
'# -*- frozen_string_literal : true -*-'
- ].freeze
+ ].freeze unless const_defined?(:MAGIC_COMMENTS)
let :stubs do
{}
@@ -556,6 +556,71 @@
end
end
end
+
+ describe 'frozen option' do
+ let :aborted_message do
+ "annotate error. #{ROUTE_FILE} needs to be updated, but annotate was run with `--frozen`."
+ end
+
+ let :rake_routes_result do
+ <<-EOS
+ Prefix Verb URI Pattern Controller#Action
+ myaction1 GET /url1(.:format) mycontroller1#action
+ myaction2 POST /url2(.:format) mycontroller2#action
+ myaction3 DELETE|GET /url3(.:format) mycontroller3#action
+ EOS
+ end
+
+ before :each do
+ expect(File).to receive(:exist?).with(ROUTE_FILE).and_return(true).once
+ expect(File).to receive(:read).with(ROUTE_FILE).and_return(route_file_content).once
+
+ expect(AnnotateRoutes::HeaderGenerator).to receive(:`).with('rake routes').and_return(rake_routes_result).once
+ end
+
+ context 'when annotation does not exists' do
+ let :route_file_content do
+ ''
+ end
+
+ it 'aborts' do
+ expect { AnnotateRoutes.do_annotations(frozen: true) }.to raise_error SystemExit, aborted_message
+ end
+ end
+
+ context 'when annotation exists but is not updated' do
+ let :route_file_content do
+ <<~EOS
+ # == Route Map
+ #
+ # Prefix Verb URI Pattern Controller#Action
+ # myaction2 POST /url2(.:format) mycontroller2#action
+ # myaction3 DELETE|GET /url3(.:format) mycontroller3#action
+ EOS
+ end
+
+ it 'aborts' do
+ expect { AnnotateRoutes.do_annotations(frozen: true) }.to raise_error SystemExit, aborted_message
+ end
+ end
+
+ context 'when annotation exists and is already updated' do
+ let :route_file_content do
+ <<~EOS
+ # == Route Map
+ #
+ # Prefix Verb URI Pattern Controller#Action
+ # myaction1 GET /url1(.:format) mycontroller1#action
+ # myaction2 POST /url2(.:format) mycontroller2#action
+ # myaction3 DELETE|GET /url3(.:format) mycontroller3#action
+ EOS
+ end
+
+ it 'does NOT abort' do
+ expect { AnnotateRoutes.do_annotations(frozen: true) }.not_to raise_error
+ end
+ end
+ end
end
describe '.remove_annotations' do
diff --git a/spec/lib/annotate/parser_spec.rb b/spec/lib/annotate/parser_spec.rb
index 176e453e3..16084b02b 100644
--- a/spec/lib/annotate/parser_spec.rb
+++ b/spec/lib/annotate/parser_spec.rb
@@ -260,6 +260,17 @@ module Annotate # rubocop:disable Metrics/ModuleLength
end
end
+ %w[-c --show-check-constraints].each do |option|
+ describe option do
+ let(:env_key) { 'show_check_constraints' }
+ let(:set_value) { 'yes' }
+ it 'sets the ENV variable' do
+ expect(ENV).to receive(:[]=).with(env_key, set_value)
+ Parser.parse([option])
+ end
+ end
+ end
+
%w[-k --show-foreign-keys].each do |option|
describe option do
let(:env_key) { 'show_foreign_keys' }
@@ -549,5 +560,15 @@ module Annotate # rubocop:disable Metrics/ModuleLength
Parser.parse([option])
end
end
+
+ describe '--with-comment-column' do
+ let(:option) { '--with-comment-column' }
+ let(:env_key) { 'with_comment_column' }
+ let(:set_value) { 'true' }
+ it 'sets the ENV variable' do
+ expect(ENV).to receive(:[]=).with(env_key, set_value)
+ Parser.parse([option])
+ end
+ end
end
end
diff --git a/spec/lib/tasks/annotate_models_spec.rb b/spec/lib/tasks/annotate_models_spec.rb
new file mode 100644
index 000000000..03f82391f
--- /dev/null
+++ b/spec/lib/tasks/annotate_models_spec.rb
@@ -0,0 +1,36 @@
+require_relative '../../spec_helper'
+
+describe 'Annotate annotate_models rake task and Annotate.set_defaults' do # rubocop:disable RSpec/DescribeClass
+ before do
+ Rake.application = Rake::Application.new
+ Rake::Task.define_task('environment')
+ Rake.load_rakefile('tasks/annotate_models.rake')
+ end
+
+ after do
+ Annotate.instance_variable_set('@has_set_defaults', false)
+ end
+
+ let(:annotate_models_argument) do
+ argument = nil
+ allow(AnnotateModels).to receive(:do_annotations) { |arg| argument = arg }
+ Rake::Task['annotate_models'].invoke
+ argument
+ end
+
+ describe 'with_comment_column' do
+ subject { annotate_models_argument[:with_comment_column] }
+
+ after { ENV.delete('with_comment_column') }
+
+ context 'when Annotate.set_defaults is not called (defaults)' do
+ it { is_expected.to be_falsey }
+ end
+
+ context 'when Annotate.set_defaults sets it to "true"' do
+ before { Annotate.set_defaults('with_comment_column' => 'true') }
+
+ it { is_expected.to be_truthy }
+ end
+ end
+end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 5b68b3636..e461e55bb 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -33,3 +33,8 @@
require 'annotate/helpers'
require 'annotate/constants'
require 'byebug'
+
+RSpec.configure do |config|
+ config.order = 'random'
+ config.filter_run_when_matching :focus
+end