diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..3a630cf6 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,220 @@ +name: CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + test: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + ruby: ['2.7', '3.0', '3.1', 'jruby-9.3'] + gemfile: + - gemfiles/mysql2/6-0.gemfile + - gemfiles/postgresql/6-0.gemfile + - gemfiles/sqlite3/6-0.gemfile + - gemfiles/mysql2/6-1.gemfile + - gemfiles/postgresql/6-1.gemfile + - gemfiles/sqlite3/6-1.gemfile + - gemfiles/mysql2/7-0.gemfile + - gemfiles/postgresql/7-0.gemfile + - gemfiles/sqlite3/7-0.gemfile + include: + # + # The future + # + # Active Record head + - ruby: '2.7' + gemfile: gemfiles/mysql2/master.gemfile + - ruby: '2.7' + gemfile: gemfiles/postgresql/master.gemfile + - ruby: '2.7' + gemfile: gemfiles/sqlite3/master.gemfile + - ruby: '3.0' + gemfile: gemfiles/mysql2/master.gemfile + - ruby: '3.0' + gemfile: gemfiles/postgresql/master.gemfile + - ruby: '3.0' + gemfile: gemfiles/sqlite3/master.gemfile + - ruby: '3.1' + gemfile: gemfiles/mysql2/master.gemfile + - ruby: '3.1' + gemfile: gemfiles/postgresql/master.gemfile + - ruby: '3.1' + gemfile: gemfiles/sqlite3/master.gemfile + # MRI Ruby head + - ruby: head + gemfile: gemfiles/mysql2/master.gemfile + - ruby: head + gemfile: gemfiles/postgresql/master.gemfile + - ruby: head + gemfile: gemfiles/sqlite3/master.gemfile + - ruby: head + gemfile: gemfiles/mysql2/7-0.gemfile + - ruby: head + gemfile: gemfiles/postgresql/7-0.gemfile + - ruby: head + gemfile: gemfiles/sqlite3/7-0.gemfile + # JRuby head + - ruby: jruby-head + gemfile: gemfiles/mysql2/6-1.gemfile + - ruby: jruby-head + gemfile: gemfiles/postgresql/6-1.gemfile + - ruby: jruby-head + gemfile: gemfiles/sqlite3/6-1.gemfile + + # + # Current + # + # MRI Ruby 2.6 + - ruby: '2.6' + gemfile: gemfiles/mysql2/6-0.gemfile + - ruby: '2.6' + gemfile: gemfiles/postgresql/6-0.gemfile + - ruby: '2.6' + gemfile: gemfiles/sqlite3/6-0.gemfile + - ruby: '2.6' + gemfile: gemfiles/mysql2/6-1.gemfile + - ruby: '2.6' + gemfile: gemfiles/postgresql/6-1.gemfile + - ruby: '2.6' + gemfile: gemfiles/sqlite3/6-1.gemfile + # Rails 5.2 + - ruby: '2.6' + gemfile: gemfiles/mysql2/5-2.gemfile + - ruby: '2.6' + gemfile: gemfiles/postgresql/5-2.gemfile + - ruby: '2.6' + gemfile: gemfiles/sqlite3/5-2.gemfile + - ruby: '2.7' + gemfile: gemfiles/mysql2/5-2.gemfile + - ruby: '2.7' + gemfile: gemfiles/postgresql/5-2.gemfile + - ruby: '2.7' + gemfile: gemfiles/sqlite3/5-2.gemfile + - ruby: 'jruby-9.2' + gemfile: gemfiles/mysql2/5-2.gemfile + - ruby: 'jruby-9.2' + gemfile: gemfiles/postgresql/5-2.gemfile + - ruby: 'jruby-9.2' + gemfile: gemfiles/sqlite3/5-2.gemfile + + # + # The past + # + # EOL Active Record + # Rails 3.2 was maintained longer and is ruby 2.2 compatible + - ruby: '2.2' + gemfile: gemfiles/postgresql/3-2.gemfile + - ruby: '2.2' + gemfile: gemfiles/sqlite3/3-2.gemfile + # Rails <= 4.0 was only compatible with ruby 2.0 + # The test were running, but there are known incompatibilites + - ruby: 2.0.0 + gemfile: gemfiles/postgresql/3-0.gemfile + - ruby: 2.0.0 + gemfile: gemfiles/sqlite3/3-0.gemfile + - ruby: 2.0.0 + gemfile: gemfiles/postgresql/3-1.gemfile + - ruby: 2.0.0 + gemfile: gemfiles/sqlite3/3-1.gemfile + - ruby: 2.0.0 + gemfile: gemfiles/postgresql/4-0.gemfile + - ruby: 2.0.0 + gemfile: gemfiles/sqlite3/4-0.gemfile + # Rails 4.1 was only compatible with ruby 2.1 + - ruby: '2.1' + gemfile: gemfiles/postgresql/4-1.gemfile + - ruby: '2.1' + gemfile: gemfiles/sqlite3/4-1.gemfile + # Rails 4.2 was EOL with the release of 6.0 and compatible with ruby 2.4 + - ruby: '2.4' + gemfile: gemfiles/mysql2/4-2.gemfile + - ruby: '2.4' + gemfile: gemfiles/postgresql/4-2.gemfile + - ruby: '2.4' + gemfile: gemfiles/sqlite3/4-2.gemfile + # Rails 5.0 was EOL with the release of 5.2 and compatible with ruby 2.4 + - ruby: '2.4' + gemfile: gemfiles/mysql2/5-0.gemfile + - ruby: '2.4' + gemfile: gemfiles/postgresql/5-0.gemfile + - ruby: '2.4' + gemfile: gemfiles/sqlite3/5-0.gemfile + # Rails 5.1 was EOL with the release of 6.0 and compatible with ruby 2.5 + - ruby: '2.5' + gemfile: gemfiles/mysql2/5-1.gemfile + - ruby: '2.5' + gemfile: gemfiles/postgresql/5-1.gemfile + - ruby: '2.5' + gemfile: gemfiles/sqlite3/5-1.gemfile + + # + # The parallel dimension + # + # Rubinius (Isn't supported on Github Actions) + # - rvm: rbx-2 + # gemfile: gemfiles/mysql2/6-0.gemfile + # - rvm: rbx-2 + # gemfile: gemfiles/postgresql/6-0.gemfile + # - rvm: rbx-2 + # gemfile: gemfiles/sqlite3/6-0.gemfile + continue-on-error: ${{ endsWith(matrix.gemfile, 'master.gemfile') || endsWith(matrix.ruby, 'head') }} + services: + postgres: + # AR before 4.2.6 doesn't work with 12 + image: postgres:11-alpine + # Provide the password for postgres + env: + POSTGRES_DB: delayed_job_test + POSTGRES_PASSWORD: postgres + # Set health checks to wait until postgres has started + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + # Maps tcp port 5432 on service container to the host + - 5432:5432 + mysql: + image: mysql:5.7 + env: + MYSQL_ALLOW_EMPTY_PASSWORD: yes + MYSQL_DATABASE: delayed_job_test + ports: + - 3306:3306 + options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 + + steps: + - uses: actions/checkout@v2 + - uses: ruby/setup-ruby@v1 + env: + BUNDLE_GEMFILE: ${{ matrix.gemfile }} + with: + ruby-version: ${{ matrix.ruby }} + bundler-cache: true # runs 'bundle install' and caches installed gems automatically + - name: Run tests + env: + BUNDLE_GEMFILE: ${{ matrix.gemfile }} + run: bundle exec rspec + - name: Coveralls Parallel + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.github_token }} + flag-name: run-${{ matrix.ruby }}-${{ matrix.gemfile }} + parallel: true + + finish: + needs: test + runs-on: ubuntu-latest + steps: + - name: Coveralls Finished + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.github_token }} + parallel-finished: true diff --git a/.github/workflows/rubocop.yml b/.github/workflows/rubocop.yml new file mode 100644 index 00000000..7519676e --- /dev/null +++ b/.github/workflows/rubocop.yml @@ -0,0 +1,30 @@ +name: RuboCop + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up Ruby 2.7 + uses: ruby/setup-ruby@v1 + with: + ruby-version: 2.7 + - name: Generate lockfile for cache key + run: bundle lock + - name: Cache gems + uses: actions/cache@v1 + with: + path: vendor/bundle + key: ${{ runner.os }}-rubocop-${{ hashFiles('**/Gemfile.lock') }} + restore-keys: | + ${{ runner.os }}-rubocop- + - name: Install gems + run: | + bundle config path vendor/bundle + bundle config set without 'default test' + bundle install --jobs 4 --retry 3 + - name: Run RuboCop + run: bundle exec rubocop --parallel diff --git a/.rubocop.yml b/.rubocop.yml index 48e569cc..bb1eab8e 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -1,5 +1,8 @@ -# Load the rubocop-rspec gem -require: rubocop-rspec +require: + - rubocop-packaging + - rubocop-performance + - rubocop-rails + - rubocop-rspec Rails: Enabled: true @@ -7,6 +10,8 @@ AllCops: Exclude: - lib/**/templates/* - vendor/**/* + NewCops: enable + SuggestExtensions: false ################# # [i] Overrides # @@ -29,30 +34,32 @@ Style/EmptyMethod: EnforcedStyle: expanded # Align ends correctly. -EndAlignment: +Layout/EndAlignment: EnforcedStyleAlignWith: variable -LineLength: +Layout/LineLength: Max: 120 -SignalException: +Style/SignalException: EnforcedStyle: only_raise -SpaceInsideBlockBraces: +Layout/SpaceInsideBlockBraces: SpaceBeforeBlockParameters: true -SpaceInsideHashLiteralBraces: +Layout/SpaceInsideHashLiteralBraces: EnforcedStyle: space -BracesAroundHashParameters: - EnforcedStyle: context_dependent - -StringLiterals: +Style/StringLiterals: EnforcedStyle: double_quotes ################# # Disabled cops # ################# +# We actually still work with ruby 2.0 but this setting only supports 2.4+ +# We aren't going to drop old versions just to make rubocop happy. +Gemspec/RequiredRubyVersion: + Enabled: false + Metrics/ClassLength: Enabled: false @@ -77,6 +84,9 @@ Style/FormatString: Style/Lambda: Enabled: false +Style/MultipleComparison: + Enabled: false + Style/NegatedIf: Enabled: false @@ -101,6 +111,9 @@ Style/WordArray: Rails/HasAndBelongsToMany: Enabled: false +Rails/RakeEnvironment: + Enabled: false + # enforces using the class name in a describe block (e.g. `describe TestedClass do`) RSpec/DescribeClass: Enabled: false @@ -123,12 +136,15 @@ RSpec/MessageExpectation: RSpec/MultipleExpectations: Enabled: false +RSpec/MultipleMemoizedHelpers: + Enabled: false + # enforces rules about how many nested `describe` blocks are allowed RSpec/NestedGroups: Enabled: false # enforces rules about using `it` or `describe` block methods instead of `feature` or `scenario` -Capybara/FeatureMethods: +RSpec/Capybara/FeatureMethods: Enabled: false ################### @@ -149,3 +165,8 @@ Style/FormatStringToken: Style/NumericPredicate: Enabled: false + +# We still allow really old versions of Ruby and Rails +# While I like the safe navigator, we don't want to use it here just yet +Style/SafeNavigation: + Enabled: false diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 88be7086..00000000 --- a/.travis.yml +++ /dev/null @@ -1,155 +0,0 @@ -language: ruby -branches: - only: - - master -before_script: - - mysql -e 'create database delayed_job_test;' - - mysql --version - - psql -c 'create database delayed_job_test;' -U postgres -script: bundle exec $COMMAND -env: - global: - - JRUBY_OPTS="$JRUBY_OPTS -Xcli.debug=true --debug" - - COMMAND=rspec -gemfile: # Supported - - gemfiles/mysql2/4-2.gemfile - - gemfiles/mysql2/5-1.gemfile - - gemfiles/mysql2/5-2.gemfile - - gemfiles/postgresql/4-2.gemfile - - gemfiles/postgresql/5-1.gemfile - - gemfiles/postgresql/5-2.gemfile - - gemfiles/sqlite3/4-2.gemfile - - gemfiles/sqlite3/5-1.gemfile - - gemfiles/sqlite3/5-2.gemfile -rvm: # Supported - - 2.2.10 - - 2.3.7 - - 2.4.4 - - jruby-9.1.8.0 - -jdk: oraclejdk8 - -matrix: - allow_failures: - - rvm: jruby-head # Future - - rvm: rbx-2 # Parallel dimension - - rvm: ruby-head # Future - - gemfile: gemfiles/mysql2/master.gemfile # Future - - gemfile: gemfiles/postgresql/master.gemfile # Future - - gemfile: gemfiles/sqlite3/master.gemfile # Future - # The two combinations below are currently broken. We should stop allowing - # failure as the issue is resolved. See: - # https://github.com/jruby/activerecord-jdbc-adapter/issues/700 - - rvm: jruby-9.1.8.0 - gemfile: gemfiles/mysql2/5-1.gemfile - - rvm: jruby-9.1.8.0 - gemfile: gemfiles/postgresql/5-1.gemfile - - rvm: jruby-9.1.8.0 - gemfile: gemfiles/mysql2/5-2.gemfile - - rvm: jruby-9.1.8.0 - gemfile: gemfiles/postgresql/5-2.gemfile - - rvm: jruby-9.1.8.0 - gemfile: gemfiles/sqlite3/5-2.gemfile - - include: - # - # Rubocop - # - - rvm: 2.5.1 - gemfile: Gemfile - env: - - COMMAND=rubocop - # - # The future - # - # MRI 2.5.1 - - rvm: 2.5.1 - gemfile: gemfiles/mysql2/5-1.gemfile - - rvm: 2.5.1 - gemfile: gemfiles/postgresql/5-1.gemfile - - rvm: 2.5.1 - gemfile: gemfiles/sqlite3/5-1.gemfile - - rvm: 2.5.1 - gemfile: gemfiles/mysql2/5-2.gemfile - - rvm: 2.5.1 - gemfile: gemfiles/postgresql/5-2.gemfile - - rvm: 2.5.1 - gemfile: gemfiles/sqlite3/5-2.gemfile - # Active Record head - - rvm: 2.5.1 - gemfile: gemfiles/mysql2/master.gemfile - - rvm: 2.5.1 - gemfile: gemfiles/postgresql/master.gemfile - - rvm: 2.5.1 - gemfile: gemfiles/sqlite3/master.gemfile - # MRI Ruby head - - rvm: ruby-head - gemfile: gemfiles/mysql2/5-2.gemfile - - rvm: ruby-head - gemfile: gemfiles/postgresql/5-2.gemfile - - rvm: ruby-head - gemfile: gemfiles/sqlite3/5-2.gemfile - # JRuby head - - rvm: jruby-head - gemfile: gemfiles/mysql2/5-2.gemfile - - rvm: jruby-head - gemfile: gemfiles/postgresql/5-2.gemfile - - rvm: jruby-head - gemfile: gemfiles/sqlite3/5-2.gemfile - # - # The past - # - # EOL Active Record - # Rails 3.2 was maintained longer and is ruby 2.2 compatible - - rvm: 2.2.10 - gemfile: gemfiles/mysql2/3-2.gemfile - - rvm: 2.2.10 - gemfile: gemfiles/postgresql/3-2.gemfile - - rvm: 2.2.10 - gemfile: gemfiles/sqlite3/3-2.gemfile - # Rails <= 4.0 was only compatible with ruby 2.0 - # The test were running, but there are known incompatibilites - - rvm: 2.0.0-p648 - gemfile: gemfiles/mysql2/3-0.gemfile - - rvm: 2.0.0-p648 - gemfile: gemfiles/mysql2/3-1.gemfile - - rvm: 2.0.0-p648 - gemfile: gemfiles/postgresql/3-0.gemfile - - rvm: 2.0.0-p648 - gemfile: gemfiles/postgresql/3-1.gemfile - - rvm: 2.0.0-p648 - gemfile: gemfiles/sqlite3/3-0.gemfile - - rvm: 2.0.0-p648 - gemfile: gemfiles/sqlite3/3-1.gemfile - - rvm: 2.0.0-p648 - gemfile: gemfiles/mysql2/4-0.gemfile - - rvm: 2.0.0-p648 - gemfile: gemfiles/postgresql/4-0.gemfile - - rvm: 2.0.0-p648 - gemfile: gemfiles/sqlite3/4-0.gemfile - # Rails 4.1 was only compatible with ruby 2.1 - - rvm: 2.1.9 - gemfile: gemfiles/mysql2/4-1.gemfile - - rvm: 2.1.9 - gemfile: gemfiles/postgresql/4-1.gemfile - - rvm: 2.1.9 - gemfile: gemfiles/sqlite3/4-1.gemfile - # Rails 5.0 was EOL with the release of 5.2 - - rvm: 2.4.4 - gemfile: gemfiles/mysql2/5-0.gemfile - - rvm: 2.4.4 - gemfile: gemfiles/postgresql/5-0.gemfile - - rvm: 2.4.4 - gemfile: gemfiles/sqlite3/5-0.gemfile - # - # The parallel dimension - # - # Rubinius - - rvm: rbx-2 - gemfile: gemfiles/mysql2/5-1.gemfile - - rvm: rbx-2 - gemfile: gemfiles/postgresql/5-1.gemfile - - rvm: rbx-2 - gemfile: gemfiles/sqlite3/5-1.gemfile - -sudo: false diff --git a/Gemfile b/Gemfile index 6a063649..270c0b85 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -15,11 +17,18 @@ group :test do gem "sqlite3" end - gem "coveralls", require: false gem "rspec", ">= 3" + + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false +end + +group :rubocop do gem "rubocop" + gem "rubocop-packaging" + gem "rubocop-performance" + gem "rubocop-rails" gem "rubocop-rspec" - gem "simplecov", require: false end gemspec diff --git a/README.md b/README.md index 7e87f786..49c821ec 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,12 @@ **If you're viewing this at https://github.com/collectiveidea/delayed_job_active_record, you're reading the documentation for the master branch. [View documentation for the latest release -(4.1.3).](https://github.com/collectiveidea/delayed_job_active_record/tree/v4.1.3)** +(4.1.7).](https://github.com/collectiveidea/delayed_job_active_record/tree/v4.1.7)** # DelayedJob ActiveRecord Backend [![Gem Version](https://img.shields.io/gem/v/delayed_job_active_record.svg)](https://rubygems.org/gems/delayed_job_active_record) -[![Build Status](https://img.shields.io/travis/collectiveidea/delayed_job_active_record.svg)](https://travis-ci.org/collectiveidea/delayed_job_active_record) -[![Dependency Status](https://img.shields.io/gemnasium/collectiveidea/delayed_job_active_record.svg)](https://gemnasium.com/collectiveidea/delayed_job_active_record) -[![Code Climate](https://img.shields.io/codeclimate/github/collectiveidea/delayed_job_active_record.svg)](https://codeclimate.com/github/collectiveidea/delayed_job_active_record) +![CI](https://github.com/collectiveidea/delayed_job_active_record/workflows/CI/badge.svg) [![Coverage Status](https://img.shields.io/coveralls/collectiveidea/delayed_job_active_record.svg)](https://coveralls.io/r/collectiveidea/delayed_job_active_record) ## Installation diff --git a/Rakefile b/Rakefile index b8d3c778..3ce82364 100644 --- a/Rakefile +++ b/Rakefile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require "bundler/gem_helper" Bundler::GemHelper.install_tasks diff --git a/delayed_job_active_record.gemspec b/delayed_job_active_record.gemspec index f0c5f348..91f8a852 100644 --- a/delayed_job_active_record.gemspec +++ b/delayed_job_active_record.gemspec @@ -1,5 +1,7 @@ +# frozen_string_literal: true + Gem::Specification.new do |spec| - spec.add_dependency "activerecord", [">= 3.0", "< 5.3"] + spec.add_dependency "activerecord", [">= 3.0", "< 8.0"] spec.add_dependency "delayed_job", [">= 3.0", "< 5"] spec.authors = ["Brian Ryckbost", "Matt Griffin", "Erik Michaels-Ober"] spec.description = "ActiveRecord backend for Delayed::Job, originally authored by Tobias Lütke" @@ -7,8 +9,9 @@ Gem::Specification.new do |spec| spec.files = %w[CONTRIBUTING.md LICENSE.md README.md delayed_job_active_record.gemspec] + Dir["lib/**/*.rb"] spec.homepage = "http://github.com/collectiveidea/delayed_job_active_record" spec.licenses = ["MIT"] + spec.metadata = { "rubygems_mfa_required" => "true" } spec.name = "delayed_job_active_record" spec.require_paths = ["lib"] spec.summary = "ActiveRecord backend for DelayedJob" - spec.version = "4.1.3" + spec.version = "4.1.7" end diff --git a/gemfiles/.rubocop.yml b/gemfiles/.rubocop.yml new file mode 100644 index 00000000..d10863b5 --- /dev/null +++ b/gemfiles/.rubocop.yml @@ -0,0 +1,5 @@ +inherit_from: + - ../.rubocop.yml + +Naming/FileName: + Enabled: false diff --git a/gemfiles/mysql2/3-0.gemfile b/gemfiles/mysql2/3-0.gemfile index 836d9985..5c795a97 100644 --- a/gemfiles/mysql2/3-0.gemfile +++ b/gemfiles/mysql2/3-0.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -5,9 +7,9 @@ gem "rake" group :test do gem "activerecord-mysql2-adapter" - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 3.0.0" end diff --git a/gemfiles/mysql2/3-1.gemfile b/gemfiles/mysql2/3-1.gemfile index 5eb7ed81..88ab34c8 100644 --- a/gemfiles/mysql2/3-1.gemfile +++ b/gemfiles/mysql2/3-1.gemfile @@ -1,12 +1,14 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" gem "mysql2", "~> 0.3.10" -gem "coveralls", require: false gem "rspec", ">= 2.11" -gem "simplecov", require: false +gem "simplecov", ">= 0.20.0", require: false +gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 3.1.0" diff --git a/gemfiles/mysql2/3-2.gemfile b/gemfiles/mysql2/3-2.gemfile index 2fd7011f..7c5b0555 100644 --- a/gemfiles/mysql2/3-2.gemfile +++ b/gemfiles/mysql2/3-2.gemfile @@ -1,12 +1,14 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" gem "mysql2", "~> 0.3.10" -gem "coveralls", require: false gem "rspec", ">= 2.11" -gem "simplecov", require: false +gem "simplecov", ">= 0.17.0", require: false +gem "simplecov-lcov", "< 0.8.0", require: false gem "activerecord", "~> 3.2.0" diff --git a/gemfiles/mysql2/4-0.gemfile b/gemfiles/mysql2/4-0.gemfile index a7720eb1..c6308680 100644 --- a/gemfiles/mysql2/4-0.gemfile +++ b/gemfiles/mysql2/4-0.gemfile @@ -1,12 +1,14 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" gem "mysql2", "~> 0.3.10" -gem "coveralls", require: false gem "rspec", ">= 2.11" -gem "simplecov", require: false +gem "simplecov", ">= 0.20.0", require: false +gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 4.0.0" diff --git a/gemfiles/mysql2/4-1.gemfile b/gemfiles/mysql2/4-1.gemfile index 6f204a0e..7e08a6ef 100644 --- a/gemfiles/mysql2/4-1.gemfile +++ b/gemfiles/mysql2/4-1.gemfile @@ -1,12 +1,14 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" gem "mysql2", "~> 0.3.13" -gem "coveralls", require: false gem "rspec", ">= 2.11" -gem "simplecov", require: false +gem "simplecov", ">= 0.17.0", require: false +gem "simplecov-lcov", "< 0.8.0", require: false gem "activerecord", "~> 4.1.0" diff --git a/gemfiles/mysql2/4-2.gemfile b/gemfiles/mysql2/4-2.gemfile index 7e633d79..27225289 100644 --- a/gemfiles/mysql2/4-2.gemfile +++ b/gemfiles/mysql2/4-2.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -8,12 +10,12 @@ group :test do end platforms :ruby, :mswin, :mingw do - gem "mysql2", ">= 0.3.13", "< 0.5" + gem "mysql2", [">= 0.3.13", "< 0.5"] end - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.18.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 4.2.0" end diff --git a/gemfiles/mysql2/5-0.gemfile b/gemfiles/mysql2/5-0.gemfile index 4c7d7d7d..46561217 100644 --- a/gemfiles/mysql2/5-0.gemfile +++ b/gemfiles/mysql2/5-0.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -8,12 +10,12 @@ group :test do end platforms :ruby, :mswin, :mingw do - gem "mysql2" + gem "mysql2", [">= 0.3.18", "< 0.6.0"] end - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.18.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 5.0.0" end diff --git a/gemfiles/mysql2/5-1.gemfile b/gemfiles/mysql2/5-1.gemfile index 249d3d2e..e4794542 100644 --- a/gemfiles/mysql2/5-1.gemfile +++ b/gemfiles/mysql2/5-1.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -8,12 +10,12 @@ group :test do end platforms :ruby, :mswin, :mingw do - gem "mysql2" + gem "mysql2", [">= 0.3.18", "< 0.6.0"] end - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 5.1.0" end diff --git a/gemfiles/mysql2/5-2.gemfile b/gemfiles/mysql2/5-2.gemfile index ff77e119..e9e29970 100644 --- a/gemfiles/mysql2/5-2.gemfile +++ b/gemfiles/mysql2/5-2.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -8,12 +10,12 @@ group :test do end platforms :ruby, :mswin, :mingw do - gem "mysql2" + gem "mysql2", [">= 0.4.4", "< 0.6.0"] end - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 5.2.0" end diff --git a/gemfiles/mysql2/6-0.gemfile b/gemfiles/mysql2/6-0.gemfile new file mode 100644 index 00000000..047b5b23 --- /dev/null +++ b/gemfiles/mysql2/6-0.gemfile @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "rake" + +group :test do + platforms :jruby do + gem "activerecord-jdbcmysql-adapter" + end + + platforms :ruby, :mswin, :mingw do + gem "mysql2", ">= 0.4.4" + end + + gem "rspec", ">= 2.11" + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false + + gem "activerecord", "~> 6.0.0" +end + +gemspec path: "../../" diff --git a/gemfiles/mysql2/6-1.gemfile b/gemfiles/mysql2/6-1.gemfile new file mode 100644 index 00000000..a350c325 --- /dev/null +++ b/gemfiles/mysql2/6-1.gemfile @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "rake" + +group :test do + platforms :jruby do + # Remove github when 61.0 releases + gem "activerecord-jdbcmysql-adapter", github: "jruby/activerecord-jdbc-adapter" + end + + platforms :ruby, :mswin, :mingw do + gem "mysql2", "~> 0.5" + end + + gem "rspec", ">= 2.11" + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false + + gem "activerecord", "~> 6.1.0" +end + +gemspec path: "../../" diff --git a/gemfiles/mysql2/7-0.gemfile b/gemfiles/mysql2/7-0.gemfile new file mode 100644 index 00000000..57bcae35 --- /dev/null +++ b/gemfiles/mysql2/7-0.gemfile @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "rake" + +group :test do + platforms :ruby, :mswin, :mingw do + gem "mysql2", "~> 0.5" + end + + gem "rspec", ">= 2.11" + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false + + gem "activerecord", "~> 7.0.1" +end + +gemspec path: "../../" diff --git a/gemfiles/mysql2/master.gemfile b/gemfiles/mysql2/master.gemfile index 65659451..2fa7be31 100644 --- a/gemfiles/mysql2/master.gemfile +++ b/gemfiles/mysql2/master.gemfile @@ -1,21 +1,25 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" group :test do platforms :jruby do - gem "activerecord-jdbcmysql-adapter" + gem "activerecord-jdbcmysql-adapter", github: "jruby/activerecord-jdbc-adapter" end platforms :ruby, :mswin, :mingw do - gem "mysql2" + gem "mysql2", "~> 0.5" end - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", github: "rails" end +gem "delayed_job", github: "collectiveidea/delayed_job" + gemspec path: "../../" diff --git a/gemfiles/postgresql/3-0.gemfile b/gemfiles/postgresql/3-0.gemfile index b46ce039..f1f76235 100644 --- a/gemfiles/postgresql/3-0.gemfile +++ b/gemfiles/postgresql/3-0.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -5,9 +7,9 @@ gem "rake" group :test do gem "pg", "~> 0.18" - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 3.0.0" end diff --git a/gemfiles/postgresql/3-1.gemfile b/gemfiles/postgresql/3-1.gemfile index 4fb54b95..541e9d85 100644 --- a/gemfiles/postgresql/3-1.gemfile +++ b/gemfiles/postgresql/3-1.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -5,9 +7,9 @@ gem "rake" group :test do gem "pg", "~> 0.18" - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 3.1.0" end diff --git a/gemfiles/postgresql/3-2.gemfile b/gemfiles/postgresql/3-2.gemfile index e6ce602e..54017ba8 100644 --- a/gemfiles/postgresql/3-2.gemfile +++ b/gemfiles/postgresql/3-2.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -5,9 +7,9 @@ gem "rake" group :test do gem "pg", "~> 0.18" - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.17.0", require: false + gem "simplecov-lcov", "< 0.8.0", require: false gem "activerecord", "~> 3.2.0" end diff --git a/gemfiles/postgresql/4-0.gemfile b/gemfiles/postgresql/4-0.gemfile index 31fba425..5f07d69f 100644 --- a/gemfiles/postgresql/4-0.gemfile +++ b/gemfiles/postgresql/4-0.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -5,9 +7,9 @@ gem "rake" group :test do gem "pg", "~> 0.18" - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 4.0.0" end diff --git a/gemfiles/postgresql/4-1.gemfile b/gemfiles/postgresql/4-1.gemfile index 278501c1..ec6e40e3 100644 --- a/gemfiles/postgresql/4-1.gemfile +++ b/gemfiles/postgresql/4-1.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -5,9 +7,9 @@ gem "rake" group :test do gem "pg", "~> 0.18" - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.17.0", require: false + gem "simplecov-lcov", "< 0.8.0", require: false gem "activerecord", "~> 4.1.0" end diff --git a/gemfiles/postgresql/4-2.gemfile b/gemfiles/postgresql/4-2.gemfile index 047833e4..d9ce2220 100644 --- a/gemfiles/postgresql/4-2.gemfile +++ b/gemfiles/postgresql/4-2.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -8,12 +10,12 @@ group :test do end platforms :ruby, :mswin, :mingw do - gem "pg", "~> 0.18" + gem "pg", "~> 0.15" end - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.18.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 4.2.0" end diff --git a/gemfiles/postgresql/5-0.gemfile b/gemfiles/postgresql/5-0.gemfile index 3c71ef69..af510ae8 100644 --- a/gemfiles/postgresql/5-0.gemfile +++ b/gemfiles/postgresql/5-0.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -8,12 +10,12 @@ group :test do end platforms :ruby, :mswin, :mingw do - gem "pg", "~> 0.18" + gem "pg", [">= 0.18", "< 2.0"] end - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.18.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 5.0.0" end diff --git a/gemfiles/postgresql/5-1.gemfile b/gemfiles/postgresql/5-1.gemfile index 34e0c203..4aa022d7 100644 --- a/gemfiles/postgresql/5-1.gemfile +++ b/gemfiles/postgresql/5-1.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -8,12 +10,12 @@ group :test do end platforms :ruby, :mswin, :mingw do - gem "pg", "~> 0.18" + gem "pg", [">= 0.18", "< 2.0"] end - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 5.1.0" end diff --git a/gemfiles/postgresql/5-2.gemfile b/gemfiles/postgresql/5-2.gemfile index e95902c7..758fd1bb 100644 --- a/gemfiles/postgresql/5-2.gemfile +++ b/gemfiles/postgresql/5-2.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -8,12 +10,12 @@ group :test do end platforms :ruby, :mswin, :mingw do - gem "pg", "~> 0.18" + gem "pg", [">= 0.18", "< 2.0"] end - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 5.2.0" end diff --git a/gemfiles/postgresql/6-0.gemfile b/gemfiles/postgresql/6-0.gemfile new file mode 100644 index 00000000..d26dc504 --- /dev/null +++ b/gemfiles/postgresql/6-0.gemfile @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "rake" + +group :test do + platforms :jruby do + gem "activerecord-jdbcpostgresql-adapter" + end + + platforms :ruby, :mswin, :mingw do + gem "pg", [">= 0.18", "< 2.0"] + end + + gem "rspec", ">= 2.11" + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false + + gem "activerecord", "~> 6.0.0" +end + +gemspec path: "../../" diff --git a/gemfiles/postgresql/6-1.gemfile b/gemfiles/postgresql/6-1.gemfile new file mode 100644 index 00000000..19cb2b83 --- /dev/null +++ b/gemfiles/postgresql/6-1.gemfile @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "rake" + +group :test do + platforms :jruby do + # Remove github when 61.0 releases + gem "activerecord-jdbcpostgresql-adapter", github: "jruby/activerecord-jdbc-adapter" + end + + platforms :ruby, :mswin, :mingw do + gem "pg", "~> 1.1" + end + + gem "rspec", ">= 2.11" + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false + + gem "activerecord", "~> 6.1.0" +end + +gemspec path: "../../" diff --git a/gemfiles/postgresql/7-0.gemfile b/gemfiles/postgresql/7-0.gemfile new file mode 100644 index 00000000..5e1a693d --- /dev/null +++ b/gemfiles/postgresql/7-0.gemfile @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "rake" + +group :test do + platforms :ruby, :mswin, :mingw do + gem "pg", "~> 1.1" + end + + gem "rspec", ">= 2.11" + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false + + gem "activerecord", "~> 7.0.1" +end + +gemspec path: "../../" diff --git a/gemfiles/postgresql/master.gemfile b/gemfiles/postgresql/master.gemfile index 7ac422ba..8e6af335 100644 --- a/gemfiles/postgresql/master.gemfile +++ b/gemfiles/postgresql/master.gemfile @@ -1,21 +1,25 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" group :test do platforms :jruby do - gem "activerecord-jdbcpostgresql-adapter" + gem "activerecord-jdbcpostgresql-adapter", github: "jruby/activerecord-jdbc-adapter" end platforms :ruby, :mswin, :mingw do - gem "pg", "~> 0.18" + gem "pg", "~> 1.1" end - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", github: "rails" end +gem "delayed_job", github: "collectiveidea/delayed_job" + gemspec path: "../../" diff --git a/gemfiles/sqlite3/3-0.gemfile b/gemfiles/sqlite3/3-0.gemfile index 71b10b4e..2788517b 100644 --- a/gemfiles/sqlite3/3-0.gemfile +++ b/gemfiles/sqlite3/3-0.gemfile @@ -1,13 +1,15 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" group :test do - gem "sqlite3" + gem "sqlite3", "< 1.4" - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 3.0.0" end diff --git a/gemfiles/sqlite3/3-1.gemfile b/gemfiles/sqlite3/3-1.gemfile index 0099efad..1969fda0 100644 --- a/gemfiles/sqlite3/3-1.gemfile +++ b/gemfiles/sqlite3/3-1.gemfile @@ -1,13 +1,15 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" group :test do - gem "sqlite3" + gem "sqlite3", "< 1.4" - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 3.1.0" end diff --git a/gemfiles/sqlite3/3-2.gemfile b/gemfiles/sqlite3/3-2.gemfile index bb3394ea..1521817c 100644 --- a/gemfiles/sqlite3/3-2.gemfile +++ b/gemfiles/sqlite3/3-2.gemfile @@ -1,13 +1,15 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" group :test do - gem "sqlite3" + gem "sqlite3", "< 1.4" - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.17.0", require: false + gem "simplecov-lcov", "< 0.8.0", require: false gem "activerecord", "~> 3.2.0" end diff --git a/gemfiles/sqlite3/4-0.gemfile b/gemfiles/sqlite3/4-0.gemfile index ba3e3327..58f19ce5 100644 --- a/gemfiles/sqlite3/4-0.gemfile +++ b/gemfiles/sqlite3/4-0.gemfile @@ -1,13 +1,15 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" group :test do - gem "sqlite3" + gem "sqlite3", "< 1.4" - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 4.0.0" end diff --git a/gemfiles/sqlite3/4-1.gemfile b/gemfiles/sqlite3/4-1.gemfile index 94a01013..0c3720f5 100644 --- a/gemfiles/sqlite3/4-1.gemfile +++ b/gemfiles/sqlite3/4-1.gemfile @@ -1,13 +1,15 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" group :test do - gem "sqlite3" + gem "sqlite3", "< 1.4" - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.17.0", require: false + gem "simplecov-lcov", "< 0.8.0", require: false gem "activerecord", "~> 4.1.0" end diff --git a/gemfiles/sqlite3/4-2.gemfile b/gemfiles/sqlite3/4-2.gemfile index a2ae2f44..3dd24edc 100644 --- a/gemfiles/sqlite3/4-2.gemfile +++ b/gemfiles/sqlite3/4-2.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -8,12 +10,12 @@ group :test do end platforms :ruby, :mswin, :mingw do - gem "sqlite3" + gem "sqlite3", "~> 1.3.6" end - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.18.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 4.2.0" end diff --git a/gemfiles/sqlite3/5-0.gemfile b/gemfiles/sqlite3/5-0.gemfile index bc6e076c..e6534cb0 100644 --- a/gemfiles/sqlite3/5-0.gemfile +++ b/gemfiles/sqlite3/5-0.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -8,12 +10,12 @@ group :test do end platforms :ruby, :mswin, :mingw do - gem "sqlite3" + gem "sqlite3", "~> 1.3.6" end - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.18.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 5.0.0" end diff --git a/gemfiles/sqlite3/5-1.gemfile b/gemfiles/sqlite3/5-1.gemfile index 4c803830..e26dac0f 100644 --- a/gemfiles/sqlite3/5-1.gemfile +++ b/gemfiles/sqlite3/5-1.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -8,12 +10,12 @@ group :test do end platforms :ruby, :mswin, :mingw do - gem "sqlite3" + gem "sqlite3", ["~> 1.3", ">= 1.3.6"] end - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 5.1.0" end diff --git a/gemfiles/sqlite3/5-2.gemfile b/gemfiles/sqlite3/5-2.gemfile index 6dc5a0a0..e504f4f5 100644 --- a/gemfiles/sqlite3/5-2.gemfile +++ b/gemfiles/sqlite3/5-2.gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" @@ -8,12 +10,12 @@ group :test do end platforms :ruby, :mswin, :mingw do - gem "sqlite3" + gem "sqlite3", ["~> 1.3", ">= 1.3.6"] end - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", "~> 5.2.0" end diff --git a/gemfiles/sqlite3/6-0.gemfile b/gemfiles/sqlite3/6-0.gemfile new file mode 100644 index 00000000..e69f1fb1 --- /dev/null +++ b/gemfiles/sqlite3/6-0.gemfile @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "rake" + +group :test do + platforms :jruby do + gem "activerecord-jdbcsqlite3-adapter" + end + + platforms :ruby, :mswin, :mingw do + gem "sqlite3", "~> 1.4" + end + + gem "rspec", ">= 2.11" + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false + + gem "activerecord", "~> 6.0.0" +end + +gemspec path: "../../" diff --git a/gemfiles/sqlite3/6-1.gemfile b/gemfiles/sqlite3/6-1.gemfile new file mode 100644 index 00000000..cf00d980 --- /dev/null +++ b/gemfiles/sqlite3/6-1.gemfile @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "rake" + +group :test do + platforms :jruby do + # Remove github when 61.0 releases + gem "activerecord-jdbcsqlite3-adapter", github: "jruby/activerecord-jdbc-adapter" + end + + platforms :ruby, :mswin, :mingw do + gem "sqlite3", "~> 1.4" + end + + gem "rspec", ">= 2.11" + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false + + gem "activerecord", "~> 6.1.0" +end + +gemspec path: "../../" diff --git a/gemfiles/sqlite3/7-0.gemfile b/gemfiles/sqlite3/7-0.gemfile new file mode 100644 index 00000000..b8950958 --- /dev/null +++ b/gemfiles/sqlite3/7-0.gemfile @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +source "https://rubygems.org" + +gem "rake" + +group :test do + platforms :ruby, :mswin, :mingw do + gem "sqlite3", "~> 1.4" + end + + gem "rspec", ">= 2.11" + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false + + gem "activerecord", "~> 7.0.1" +end + +gemspec path: "../../" diff --git a/gemfiles/sqlite3/master.gemfile b/gemfiles/sqlite3/master.gemfile index afd2bf9a..e2342249 100644 --- a/gemfiles/sqlite3/master.gemfile +++ b/gemfiles/sqlite3/master.gemfile @@ -1,21 +1,25 @@ +# frozen_string_literal: true + source "https://rubygems.org" gem "rake" group :test do platforms :jruby do - gem "activerecord-jdbcsqlite3-adapter" + gem "activerecord-jdbcsqlite3-adapter", github: "jruby/activerecord-jdbc-adapter" end platforms :ruby, :mswin, :mingw do - gem "sqlite3" + gem "sqlite3", "~> 1.4" end - gem "coveralls", require: false gem "rspec", ">= 2.11" - gem "simplecov", require: false + gem "simplecov", ">= 0.20.0", require: false + gem "simplecov-lcov", ">= 0.8.0", require: false gem "activerecord", github: "rails" end +gem "delayed_job", github: "collectiveidea/delayed_job" + gemspec path: "../../" diff --git a/lib/delayed/backend/active_record.rb b/lib/delayed/backend/active_record.rb index b69fd050..1380ec8e 100644 --- a/lib/delayed/backend/active_record.rb +++ b/lib/delayed/backend/active_record.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require "active_record/version" module Delayed module Backend @@ -13,6 +15,7 @@ def reserve_sql_strategy=(val) if !(val == :optimized_sql || val == :default_sql) raise ArgumentError, "allowed values are :optimized_sql or :default_sql" end + @reserve_sql_strategy = val end end @@ -51,7 +54,7 @@ def self.set_delayed_job_table_name def self.ready_to_run(worker_name, max_run_time) where( - "(run_at <= ? AND (locked_at IS NULL OR locked_at < ?) OR locked_by = ?) AND failed_at IS NULL", + "((run_at <= ? AND (locked_at IS NULL OR locked_at < ?)) OR locked_by = ?) AND failed_at IS NULL", db_time_now, db_time_now - max_run_time, worker_name @@ -109,8 +112,11 @@ def self.reserve_with_scope_using_optimized_sql(ready_scope, worker, now) end def self.reserve_with_scope_using_default_sql(ready_scope, worker, now) - # This is our old fashion, tried and true, but slower lookup - ready_scope.limit(worker.read_ahead).detect do |job| + # This is our old fashion, tried and true, but possibly slower lookup + # Instead of reading the entire job record for our detect loop, we select only the id, + # and only read the full job record after we've successfully locked the job. + # This can have a noticable impact on large read_ahead configurations and large payload jobs. + ready_scope.limit(worker.read_ahead).select(:id).detect do |job| count = ready_scope.where(id: job.id).update_all(locked_at: now, locked_by: worker.name) count == 1 && job.reload end @@ -125,7 +131,7 @@ def self.reserve_with_scope_using_optimized_postgres(ready_scope, worker, now) # use 'FOR UPDATE' and we would have many locking conflicts quoted_name = connection.quote_table_name(table_name) subquery = ready_scope.limit(1).lock(true).select("id").to_sql - sql = "UPDATE #{quoted_name} SET locked_at = ?, locked_by = ? WHERE id IN (#{subquery}) RETURNING *" + sql = "UPDATE #{quoted_name} SET locked_at = ?, locked_by = ? WHERE id IN (#{subquery} SKIP LOCKED) RETURNING *" reserved = find_by_sql([sql, now, worker.name]) reserved[0] end @@ -141,6 +147,7 @@ def self.reserve_with_scope_using_optimized_mysql(ready_scope, worker, now) # UPDATE...LIMIT. It uses separate queries to lock and return the job count = ready_scope.limit(1).update_all(locked_at: now, locked_by: worker.name) return nil if count == 0 + where(locked_at: now, locked_by: worker.name, failed_at: nil).first end @@ -154,6 +161,7 @@ def self.reserve_with_scope_using_optimized_mssql(ready_scope, worker, now) sql = "UPDATE #{quoted_table_name} SET locked_at = ?, locked_by = ? WHERE id IN (#{subquery_sql})" count = connection.execute(sanitize_sql([sql, now, worker.name])) return nil if count == 0 + # MSSQL JDBC doesn't support OUTPUT INSERTED.* for returning a result set, so query locked row where(locked_at: now, locked_by: worker.name, failed_at: nil).first end diff --git a/lib/delayed_job_active_record.rb b/lib/delayed_job_active_record.rb index e6efd295..a09638e6 100644 --- a/lib/delayed_job_active_record.rb +++ b/lib/delayed_job_active_record.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require "active_record" require "delayed_job" require "delayed/backend/active_record" diff --git a/lib/generators/delayed_job/active_record_generator.rb b/lib/generators/delayed_job/active_record_generator.rb index 3370f06b..b196a553 100644 --- a/lib/generators/delayed_job/active_record_generator.rb +++ b/lib/generators/delayed_job/active_record_generator.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require "generators/delayed_job/delayed_job_generator" require "generators/delayed_job/next_migration_version" require "rails/generators/migration" diff --git a/lib/generators/delayed_job/next_migration_version.rb b/lib/generators/delayed_job/next_migration_version.rb index 64983128..0eb0b8de 100644 --- a/lib/generators/delayed_job/next_migration_version.rb +++ b/lib/generators/delayed_job/next_migration_version.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module DelayedJob module NextMigrationVersion # while methods have moved around this has been the implementation diff --git a/lib/generators/delayed_job/templates/migration.rb b/lib/generators/delayed_job/templates/migration.rb index bb90f0b0..6269ff0a 100644 --- a/lib/generators/delayed_job/templates/migration.rb +++ b/lib/generators/delayed_job/templates/migration.rb @@ -1,6 +1,6 @@ class CreateDelayedJobs < ActiveRecord::Migration<%= migration_version %> def self.up - create_table :delayed_jobs, force: true do |table| + create_table :delayed_jobs do |table| table.integer :priority, default: 0, null: false # Allows some jobs to jump to the front of the queue table.integer :attempts, default: 0, null: false # Provides for retries, but still fail eventually. table.text :handler, null: false # YAML-encoded string of the object that will do work diff --git a/lib/generators/delayed_job/upgrade_generator.rb b/lib/generators/delayed_job/upgrade_generator.rb index 2383f5ac..90a19773 100644 --- a/lib/generators/delayed_job/upgrade_generator.rb +++ b/lib/generators/delayed_job/upgrade_generator.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require "generators/delayed_job/delayed_job_generator" require "generators/delayed_job/next_migration_version" require "rails/generators/migration" diff --git a/spec/database.yml b/spec/database.yml index 225b4bcf..0c41446c 100644 --- a/spec/database.yml +++ b/spec/database.yml @@ -1,19 +1,26 @@ mysql: adapter: mysql + host: 127.0.0.1 database: delayed_job_test username: root + port: 3306 encoding: utf8 mysql2: adapter: mysql2 + host: 127.0.0.1 database: delayed_job_test username: root + port: 3306 encoding: utf8 postgresql: adapter: postgresql + host: 127.0.0.1 database: delayed_job_test username: postgres + password: postgres + port: 5432 sqlite3: adapter: sqlite3 diff --git a/spec/delayed/backend/active_record_spec.rb b/spec/delayed/backend/active_record_spec.rb index dd7bad96..16820420 100644 --- a/spec/delayed/backend/active_record_spec.rb +++ b/spec/delayed/backend/active_record_spec.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require "helper" require "delayed/backend/active_record" diff --git a/spec/delayed/serialization/active_record_spec.rb b/spec/delayed/serialization/active_record_spec.rb index dbc4afae..f0b0cd30 100644 --- a/spec/delayed/serialization/active_record_spec.rb +++ b/spec/delayed/serialization/active_record_spec.rb @@ -1,15 +1,17 @@ +# frozen_string_literal: true + require "helper" describe ActiveRecord do it "loads classes with non-default primary key" do expect do - YAML.load(Story.create.to_yaml) + YAML.load_dj(Story.create.to_yaml) end.not_to raise_error end it "loads classes even if not in default scope" do expect do - YAML.load(Story.create(scoped: false).to_yaml) + YAML.load_dj(Story.create(scoped: false).to_yaml) end.not_to raise_error end end diff --git a/spec/helper.rb b/spec/helper.rb index 80f3c280..8d5bf258 100644 --- a/spec/helper.rb +++ b/spec/helper.rb @@ -1,16 +1,21 @@ +# frozen_string_literal: true + require "simplecov" -require "coveralls" +require "simplecov-lcov" -SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new( +SimpleCov::Formatter::LcovFormatter.config do |c| + c.report_with_single_file = true + c.single_report_path = "coverage/lcov.info" +end +SimpleCov.formatters = SimpleCov::Formatter::MultiFormatter.new( [ SimpleCov::Formatter::HTMLFormatter, - Coveralls::SimpleCov::Formatter + SimpleCov::Formatter::LcovFormatter ] ) SimpleCov.start do add_filter "/spec/" - minimum_coverage(73.33) end require "logger" @@ -18,7 +23,7 @@ begin require "protected_attributes" -rescue LoadError # rubocop:disable HandleExceptions +rescue LoadError # rubocop:disable Lint/SuppressedException end require "delayed_job_active_record" require "delayed/backend/shared_spec" @@ -28,7 +33,7 @@ db_adapter = ENV["ADAPTER"] gemfile = ENV["BUNDLE_GEMFILE"] -db_adapter ||= gemfile && gemfile[%r{gemfiles/(.*?)/}] && $1 # rubocop:disable PerlBackrefs +db_adapter ||= gemfile && gemfile[%r{gemfiles/(.*?)/}] && $1 # rubocop:disable Style/PerlBackrefs db_adapter ||= "sqlite3" config = YAML.load(File.read("spec/database.yml")) @@ -36,6 +41,20 @@ ActiveRecord::Base.logger = Delayed::Worker.logger ActiveRecord::Migration.verbose = false +# MySQL 5.7 no longer supports null default values for the primary key +# Override the default primary key type in Rails <= 4.0 +# https://stackoverflow.com/a/34555109 +if db_adapter == "mysql2" + types = if defined?(ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter) + # ActiveRecord 3.2+ + ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter::NATIVE_DATABASE_TYPES + else + # ActiveRecord < 3.2 + ActiveRecord::ConnectionAdapters::Mysql2Adapter::NATIVE_DATABASE_TYPES + end + types[:primary_key] = types[:primary_key].sub(" DEFAULT NULL", "") +end + migration_template = File.open("lib/generators/delayed_job/templates/migration.rb") # need to eval the template with the migration_version intact @@ -56,6 +75,11 @@ def migration_version eval(migration_ruby) # rubocop:disable Security/Eval ActiveRecord::Schema.define do + if table_exists?(:delayed_jobs) + # `if_exists: true` was only added in Rails 5 + drop_table :delayed_jobs + end + CreateDelayedJobs.up create_table :stories, primary_key: :story_id, force: true do |table|