Skip to content

Commit

Permalink
Switch to github actions
Browse files Browse the repository at this point in the history
  • Loading branch information
ghiculescu committed Dec 10, 2020
1 parent 155dd5b commit 62b3352
Show file tree
Hide file tree
Showing 7 changed files with 153 additions and 71 deletions.
74 changes: 74 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: Test & lint
on: [push]

env:
RAILS_ENV: test
PGHOST: localhost
PGUSER: postgres

jobs:
tests:
name: Test & lint
runs-on: ubuntu-latest

strategy:
fail-fast: false
matrix:
ruby: ['2.4', '2.5', '2.6', '2.7', 'jruby']
gemfile: ['gemfiles/activerecord_4.2.0.gemfile', 'gemfiles/activerecord_5.0.2.gemfile', 'gemfiles/activerecord_5.1.0.gemfile', 'gemfiles/activerecord_5.2.2.gemfile', 'gemfiles/activerecord_6.0.0.gemfile', 'gemfiles/activerecord_6.1.0.gemfile', 'gemfiles/activerecord_master.gemfile']
exclude:
- gemfile: 'gemfiles/activerecord_4.2.0.gemfile'
ruby: '2.7' # rails 4.2 can't run on ruby 2.7 due to BigDecimal API change
- gemfile: 'gemfiles/activerecord_6.0.0.gemfile'
ruby: '2.4' # rails 6+ requires ruby 2.5+
- gemfile: 'gemfiles/activerecord_6.1.0.gemfile'
ruby: '2.4' # rails 6+ requires ruby 2.5+
- gemfile: 'gemfiles/activerecord_master.gemfile'
ruby: '2.4' # rails 6+ requires ruby 2.5+
- gemfile: 'gemfiles/activerecord_5.0.2.gemfile'
ruby: 'jruby' # this *should* work - there's a test failure; it's not incompatible like the other excludes. could be an issue in Rails 5.0.2?

services:
postgres:
image: postgres
env:
POSTGRES_USER: postgres
POSTGRES_DB: cancan_postgresql_spec
POSTGRES_PASSWORD: postgres
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports: ["5432:5432"]

steps:
- name: Checkout code
uses: actions/checkout@v2
with:
fetch-depth: '20'

- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}

- name: Install bundler
run: gem install bundler

# https://github.com/oracle/truffleruby/issues/62#issuecomment-362065726
- name: Nokogiri support for Truffleruby
run: BUNDLE_GEMFILE=${{ matrix.gemfile }} bundle config build.nokogiri --use-system-libraries
if: ${{ matrix.ruby == 'truffleruby' }}

- name: Install gems
run: BUNDLE_GEMFILE=${{ matrix.gemfile }} bundle install --jobs 2

- name: Run linter
run: BUNDLE_GEMFILE=${{ matrix.gemfile }} bundle exec rubocop

- name: Run tests on sqlite
run: DB=sqlite BUNDLE_GEMFILE=${{ matrix.gemfile }} bundle exec rake

- name: Run tests on postgres
run: DB=postgres BUNDLE_GEMFILE=${{ matrix.gemfile }} bundle exec rake
63 changes: 0 additions & 63 deletions .travis.yml

This file was deleted.

34 changes: 34 additions & 0 deletions Appraisals
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,37 @@ appraise 'activerecord_6.0.0' do
gem 'sqlite3', '~> 1.4.0'
end
end

appraise 'activerecord_6.1.0' do
gem 'actionpack', '~> 6.1.0', require: 'action_pack'
gem 'activerecord', '~> 6.1.0', require: 'active_record'
gem 'activesupport', '~> 6.1.0', require: 'active_support/all'

platforms :jruby do
gem 'activerecord-jdbcsqlite3-adapter'
gem 'jdbc-sqlite3'
gem 'jdbc-postgres'
end

platforms :ruby, :mswin, :mingw do
gem 'pg', '~> 1.2.3'
gem 'sqlite3', '~> 1.4.2'
end
end

appraise 'activerecord_master' do
gem 'actionpack', github: 'rails/rails', require: 'action_pack'
gem 'activerecord', github: 'rails/rails', require: 'active_record'
gem 'activesupport', github: 'rails/rails', require: 'active_support/all'

platforms :jruby do
gem 'activerecord-jdbcsqlite3-adapter'
gem 'jdbc-sqlite3'
gem 'jdbc-postgres'
end

platforms :ruby, :mswin, :mingw do
gem 'pg', '~> 1.2.3'
gem 'sqlite3', '~> 1.4.2'
end
end
20 changes: 20 additions & 0 deletions gemfiles/activerecord_6.1.0.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# This file was generated by Appraisal

source "https://rubygems.org"

gem "actionpack", "~> 6.1.0", require: "action_pack"
gem "activerecord", "~> 6.1.0", require: "active_record"
gem "activesupport", "~> 6.1.0", require: "active_support/all"

platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter"
gem "jdbc-sqlite3"
gem "jdbc-postgres"
end

platforms :ruby, :mswin, :mingw do
gem "pg", "~> 1.2.3"
gem "sqlite3", "~> 1.4.2"
end

gemspec path: "../"
20 changes: 20 additions & 0 deletions gemfiles/activerecord_master.gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# This file was generated by Appraisal

source "https://rubygems.org"

gem "actionpack", github: "rails/rails", require: "action_pack"
gem "activerecord", github: "rails/rails", require: "active_record"
gem "activesupport", github: "rails/rails", require: "active_support/all"

platforms :jruby do
gem "activerecord-jdbcsqlite3-adapter"
gem "jdbc-sqlite3"
gem "jdbc-postgres"
end

platforms :ruby, :mswin, :mingw do
gem "pg", "~> 1.2.3"
gem "sqlite3", "~> 1.4.2"
end

gemspec path: "../"
7 changes: 1 addition & 6 deletions lib/cancan/model_adapters/active_record_5_adapter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ def build_relation(*where_conditions)
end
end

# Rails 4.2 deprecates `sanitize_sql_hash_for_conditions`
def sanitize_sql(conditions)
if conditions.is_a?(Hash)
sanitize_sql_activerecord5(conditions)
Expand All @@ -46,11 +45,7 @@ def sanitize_sql_activerecord5(conditions)
table_metadata = ActiveRecord::TableMetadata.new(@model_class, table)
predicate_builder = ActiveRecord::PredicateBuilder.new(table_metadata)

conditions = predicate_builder.resolve_column_aliases(conditions)

conditions.stringify_keys!

predicate_builder.build_from_hash(conditions).map { |b| visit_nodes(b) }.join(' AND ')
predicate_builder.build_from_hash(conditions.stringify_keys).map { |b| visit_nodes(b) }.join(' AND ')
end

def visit_nodes(node)
Expand Down
6 changes: 4 additions & 2 deletions spec/support/sql_helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,13 @@ def connect_db

def connect_postgres
ActiveRecord::Base.establish_connection(adapter: 'postgresql', host: 'localhost',
database: 'postgres', schema_search_path: 'public')
database: 'postgres', schema_search_path: 'public',
user: 'postgres', password: 'postgres')
ActiveRecord::Base.connection.drop_database('cancan_postgresql_spec')
ActiveRecord::Base.connection.create_database('cancan_postgresql_spec', 'encoding' => 'utf-8',
'adapter' => 'postgresql')
ActiveRecord::Base.establish_connection(adapter: 'postgresql', host: 'localhost',
database: 'cancan_postgresql_spec')
database: 'cancan_postgresql_spec',
user: 'postgres', password: 'postgres')
end
end

0 comments on commit 62b3352

Please sign in to comment.