diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..0eb3322 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,207 @@ +name: Test + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + test_sqlite: + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + ruby: [ '2.6', '2.7', '3.0' ] + rails: [ '4.2', '5.0', '5.1', '5.2', '6.0', '6.1' ] + exclude: + - ruby: '2.6' + rails: '4.0' + - ruby: '2.6' + rails: '4.1' + - ruby: '2.7' + rails: '4.0' + - ruby: '2.7' + rails: '4.1' + - ruby: '2.7' + rails: '4.2' + - ruby: '3.0' + rails: '4.0' + - ruby: '3.0' + rails: '4.1' + - ruby: '3.0' + rails: '4.2' + - ruby: '3.0' + rails: '5.0' + - ruby: '3.0' + rails: '5.1' + - ruby: '3.0' + rails: '5.2' + + name: SQLite / Ruby ${{ matrix.ruby }} / Rails ${{ matrix.rails }} + + steps: + - uses: actions/checkout@v2 + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + + - name: Install gems + env: + MATRIX_RAILS_VERSION: ${{ matrix.rails }} + run: | + export BUNDLE_GEMFILE="${GITHUB_WORKSPACE}/gemfiles/rails_${MATRIX_RAILS_VERSION}.gemfile" + bundle install --jobs 4 --retry 3 + + - name: RSpec + run: bundle exec rake + + test_mysql: + runs-on: ubuntu-latest + + services: + mysql: + image: mysql:5.7 + env: + MYSQL_ROOT_PASSWORD: password + ports: + - 3306:3306 + options: >- + --health-cmd="mysqladmin ping" + --health-interval=10s + --health-timeout=5s + --health-retries=3 + + strategy: + fail-fast: false + matrix: + ruby: [ '2.6', '2.7', '3.0' ] + rails: [ '4.2', '5.0', '5.1', '5.2', '6.0', '6.1' ] + exclude: + - ruby: '2.6' + rails: '4.0' + - ruby: '2.6' + rails: '4.1' + - ruby: '2.7' + rails: '4.0' + - ruby: '2.7' + rails: '4.1' + - ruby: '2.7' + rails: '4.2' + - ruby: '3.0' + rails: '4.0' + - ruby: '3.0' + rails: '4.1' + - ruby: '3.0' + rails: '4.2' + - ruby: '3.0' + rails: '5.0' + - ruby: '3.0' + rails: '5.1' + - ruby: '3.0' + rails: '5.2' + + name: MySQL / Ruby ${{ matrix.ruby }} / Rails ${{ matrix.rails }} + + steps: + - uses: actions/checkout@v2 + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + + - name: Install database client + run: | + sudo apt-get update + sudo apt-get install -y mysql-client libmariadbclient-dev + + - name: Install gems + env: + MATRIX_RAILS_VERSION: ${{ matrix.rails }} + run: | + export BUNDLE_GEMFILE="${GITHUB_WORKSPACE}/gemfiles/rails_${MATRIX_RAILS_VERSION}.gemfile" + bundle install --jobs 4 --retry 3 + + - name: Setup database + run: | + mysql -e 'create database IF NOT EXISTS unread_test;' -u root --password=password -P 3306 -h 127.0.0.1 + + - name: RSpec + run: bundle exec rake + + test_postgres: + runs-on: ubuntu-latest + + services: + postgres: + image: postgres + env: + POSTGRES_PASSWORD: postgres + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 5432:5432 + + strategy: + fail-fast: false + matrix: + ruby: [ '2.6', '2.7', '3.0' ] + rails: [ '4.2', '5.0', '5.1', '5.2', '6.0', '6.1' ] + exclude: + - ruby: '2.6' + rails: '4.0' + - ruby: '2.6' + rails: '4.1' + - ruby: '2.7' + rails: '4.0' + - ruby: '2.7' + rails: '4.1' + - ruby: '2.7' + rails: '4.2' + - ruby: '3.0' + rails: '4.0' + - ruby: '3.0' + rails: '4.1' + - ruby: '3.0' + rails: '4.2' + - ruby: '3.0' + rails: '5.0' + - ruby: '3.0' + rails: '5.1' + - ruby: '3.0' + rails: '5.2' + + name: PostgreSQL / Ruby ${{ matrix.ruby }} / Rails ${{ matrix.rails }} + + steps: + - uses: actions/checkout@v2 + + - name: Setup Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + + - name: Install database client + run: | + sudo apt-get install -y postgresql-client + + - name: Install gems + env: + MATRIX_RAILS_VERSION: ${{ matrix.rails }} + run: | + export BUNDLE_GEMFILE="${GITHUB_WORKSPACE}/gemfiles/rails_${MATRIX_RAILS_VERSION}.gemfile" + bundle install --jobs 4 --retry 3 + + - name: Setup database + run: | + PGPASSWORD=postgres psql -c 'create database unread_test;' -U postgres -p 5432 -h localhost + + - name: RSpec + run: bundle exec rake diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 27ff51e..0000000 --- a/.travis.yml +++ /dev/null @@ -1,57 +0,0 @@ -language: ruby -cache: bundler -rvm: - - 2.5.8 - - 2.6.6 - - 2.7.2 - - 3.0.0 -gemfile: - - gemfiles/rails_6_1.gemfile - - gemfiles/rails_6_0.gemfile - - gemfiles/rails_5_2.gemfile - - gemfiles/rails_5_1.gemfile - - gemfiles/rails_5_0.gemfile - - gemfiles/rails_4_2.gemfile - - gemfiles/rails_4_1.gemfile - - gemfiles/rails_4_0.gemfile -matrix: - exclude: - - rvm: 2.5.8 - gemfile: gemfiles/rails_4_0.gemfile - - rvm: 2.5.8 - gemfile: gemfiles/rails_4_1.gemfile - - rvm: 2.6.6 - gemfile: gemfiles/rails_4_0.gemfile - - rvm: 2.6.6 - gemfile: gemfiles/rails_4_1.gemfile - - rvm: 2.7.2 - gemfile: gemfiles/rails_4_0.gemfile - - rvm: 2.7.2 - gemfile: gemfiles/rails_4_1.gemfile - - rvm: 2.7.2 - gemfile: gemfiles/rails_4_2.gemfile - - rvm: 3.0.0 - gemfile: gemfiles/rails_4_0.gemfile - - rvm: 3.0.0 - gemfile: gemfiles/rails_4_1.gemfile - - rvm: 3.0.0 - gemfile: gemfiles/rails_4_2.gemfile - - rvm: 3.0.0 - gemfile: gemfiles/rails_5_0.gemfile - - rvm: 3.0.0 - gemfile: gemfiles/rails_5_1.gemfile - - rvm: 3.0.0 - gemfile: gemfiles/rails_5_2.gemfile -sudo: false -env: - - DB=sqlite - - DB=mysql - - DB=postgres -services: - - mysql - - postgres -before_script: - - sh -c "if [ '$DB' = 'mysql' ]; then mysql -e 'create database IF NOT EXISTS unread_test;'; fi" - - sh -c "if [ '$DB' = 'postgres' ]; then psql -c 'create database unread_test;' -U postgres; fi" -addons: - postgresql: "9.4" diff --git a/Appraisals b/Appraisals index 615bc9b..eace2f0 100644 --- a/Appraisals +++ b/Appraisals @@ -1,53 +1,53 @@ -appraise "rails-6-1" do +appraise "rails-6.1" do gem "activerecord", "~> 6.1.2", ">= 6.1.2.1" gem "mysql2", "~> 0.5" gem "pg", "~> 1.1" gem "sqlite3", "~> 1.4" end -appraise "rails-6-0" do +appraise "rails-6.0" do gem "activerecord", "~> 6.0.0" gem "mysql2", ">= 0.4.4" gem "pg", ">= 0.18", "< 2.0" gem "sqlite3", "~> 1.4" end -appraise "rails-5-2" do +appraise "rails-5.2" do gem "activerecord", "~> 5.2.3" gem "mysql2", ">= 0.4.4", "< 0.6.0" gem "pg", ">= 0.18", "< 2.0" gem "sqlite3", "~> 1.3", ">= 1.3.6" end -appraise "rails-5-1" do +appraise "rails-5.1" do gem "activerecord", "~> 5.1.7" gem "mysql2", ">= 0.3.18", "< 0.6.0" gem "pg", ">= 0.18", "< 2.0" gem "sqlite3", "~> 1.3", ">= 1.3.6" end -appraise "rails-5-0" do +appraise "rails-5.0" do gem "activerecord", "~> 5.0.7" gem 'mysql2', '>= 0.3.18', '< 0.6.0' gem "pg", ">= 0.18", "< 2.0" gem 'sqlite3', '~> 1.3.6' end -appraise "rails-4-2" do +appraise "rails-4.2" do gem "activerecord", "~> 4.2.11" gem 'mysql2', '>= 0.3.13', '< 0.6.0' gem "pg", "~> 0.15" gem 'sqlite3', '~> 1.3.6' end -appraise "rails-4-1" do +appraise "rails-4.1" do gem "activerecord", "~> 4.1.16" gem 'mysql2', '~> 0.3.13' gem "pg", "~> 0.11" gem 'sqlite3', '~> 1.3.6' end -appraise "rails-4-0" do +appraise "rails-4.0" do gem "activerecord", "~> 4.0.13" gem "mysql2", '~> 0.3.10' gem "pg", "~> 0.11" diff --git a/README.md b/README.md index 849fc2e..8160b96 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Unread Ruby gem to manage read/unread status of ActiveRecord objects - and it's fast. -[![Build Status](https://travis-ci.org/ledermann/unread.svg?branch=master)](https://travis-ci.org/ledermann/unread) +[![Build Status](https://github.com/ledermann/unread/workflows/Test/badge.svg?branch=master)](https://github.com/ledermann/unread/actions) [![Maintainability](https://api.codeclimate.com/v1/badges/930c8df0f99b20324444/maintainability)](https://codeclimate.com/github/ledermann/unread/maintainability) [![Coverage Status](https://coveralls.io/repos/ledermann/unread/badge.svg?branch=master)](https://coveralls.io/r/ledermann/unread?branch=master) @@ -19,7 +19,7 @@ Ruby gem to manage read/unread status of ActiveRecord objects - and it's fast. ## Requirements -* Ruby 2.5 or newer +* Ruby 2.6 or newer * Rails 4.0 or newer (including Rails 6) * MySQL, PostgreSQL or SQLite * Needs a timestamp field in your models (like created_at or updated_at) with a database index on it diff --git a/gemfiles/rails_4_0.gemfile b/gemfiles/rails_4.0.gemfile similarity index 100% rename from gemfiles/rails_4_0.gemfile rename to gemfiles/rails_4.0.gemfile diff --git a/gemfiles/rails_4_1.gemfile b/gemfiles/rails_4.1.gemfile similarity index 100% rename from gemfiles/rails_4_1.gemfile rename to gemfiles/rails_4.1.gemfile diff --git a/gemfiles/rails_4_2.gemfile b/gemfiles/rails_4.2.gemfile similarity index 100% rename from gemfiles/rails_4_2.gemfile rename to gemfiles/rails_4.2.gemfile diff --git a/gemfiles/rails_5_0.gemfile b/gemfiles/rails_5.0.gemfile similarity index 100% rename from gemfiles/rails_5_0.gemfile rename to gemfiles/rails_5.0.gemfile diff --git a/gemfiles/rails_5_1.gemfile b/gemfiles/rails_5.1.gemfile similarity index 100% rename from gemfiles/rails_5_1.gemfile rename to gemfiles/rails_5.1.gemfile diff --git a/gemfiles/rails_5_2.gemfile b/gemfiles/rails_5.2.gemfile similarity index 100% rename from gemfiles/rails_5_2.gemfile rename to gemfiles/rails_5.2.gemfile diff --git a/gemfiles/rails_6_0.gemfile b/gemfiles/rails_6.0.gemfile similarity index 100% rename from gemfiles/rails_6_0.gemfile rename to gemfiles/rails_6.0.gemfile diff --git a/gemfiles/rails_6_1.gemfile b/gemfiles/rails_6.1.gemfile similarity index 100% rename from gemfiles/rails_6_1.gemfile rename to gemfiles/rails_6.1.gemfile diff --git a/spec/database.yml b/spec/database.yml index d7bc521..139b8d9 100644 --- a/spec/database.yml +++ b/spec/database.yml @@ -5,8 +5,14 @@ mysql: adapter: mysql2 database: unread_test username: root + password: password encoding: utf8 + host: 127.0.0.1 + port: 3306 postgres: adapter: postgresql database: unread_test username: postgres + password: postgres + host: localhost + port: 5432 diff --git a/unread.gemspec b/unread.gemspec index 51dcb5b..2c42205 100644 --- a/unread.gemspec +++ b/unread.gemspec @@ -12,7 +12,7 @@ Gem::Specification.new do |s| s.homepage = "https://github.com/ledermann/unread" s.summary = %q{Manages read/unread status of ActiveRecord objects} s.description = %q{This gem creates a scope for unread objects and adds methods to mark objects as read } - s.required_ruby_version = '>= 2.5' + s.required_ruby_version = '>= 2.6' s.files = `git ls-files -z`.split("\x0").reject do |f| f.match(%r{^(test|spec|features)/})