Skip to content

Commit 4497651

Browse files
committed
Drop EOL versions, modernize CI and test setup
- Require Ruby >= 3.3, drop Ruby 3.1/3.2 (EOL) - Test against Rails 7.2/8.0/8.1, drop Rails 7.0/7.1 (EOL) - Test against ActiveAdmin 3.2/3.3/3.4/3.5 - Replace Travis CI with GitHub Actions - Fix sprockets 4 manifest.js for dummy app - Fix secret_key_base deprecation for Rails 7.1 - Add ransackable_attributes/associations to test models - Fix log_error recursive call bug in test app
1 parent d2cdc2c commit 4497651

10 files changed

Lines changed: 71 additions & 86 deletions

File tree

.github/workflows/ci.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
name: CI
2+
on:
3+
pull_request:
4+
push:
5+
branches: [master]
6+
jobs:
7+
test:
8+
name: Ruby ${{ matrix.ruby }} / Rails ${{ matrix.rails }} / AA ${{ matrix.activeadmin }}
9+
runs-on: ubuntu-latest
10+
strategy:
11+
fail-fast: false
12+
matrix:
13+
ruby: ['3.3', '3.4', '4.0']
14+
rails: ['~> 7.2.0', '~> 8.0.0', '~> 8.1.0']
15+
activeadmin: ['~> 3.2', '~> 3.3', '~> 3.4', '~> 3.5']
16+
env:
17+
RAILS_VERSION: ${{ matrix.rails }}
18+
ACTIVE_ADMIN_VERSION: ${{ matrix.activeadmin }}
19+
steps:
20+
- uses: actions/checkout@v4
21+
- uses: ruby/setup-ruby@v1
22+
with:
23+
ruby-version: ${{ matrix.ruby }}
24+
bundler-cache: true
25+
- name: Run tests
26+
run: bundle exec rspec spec

.travis.yml

Lines changed: 0 additions & 51 deletions
This file was deleted.

Gemfile

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,15 @@
1-
# frozen_string_literal: true
2-
31
source 'https://rubygems.org'
4-
5-
# Specify your gem's dependencies in capybara_active_admin.gemspec
62
gemspec
73

8-
gem 'capybara'
9-
gem 'selenium-webdriver'
10-
# https://github.com/mattheworiordan/capybara-screenshot/issues/225#issuecomment-409407825
11-
gem 'cuprite'
12-
gem 'puma'
13-
gem 'rake', '~> 12.0'
14-
gem 'rspec-rails', '~> 4.0'
15-
gem 'rubocop', '~> 0.81.0', require: false
16-
gem 'yard', require: false
17-
18-
gem 'activeadmin', ENV.fetch('ACTIVE_ADMIN_VERSION', '~> 2.0'), require: false
19-
gem 'rails', ENV.fetch('RAILS_VERSION', '6.0.0')
20-
21-
# responders 3 drops ruby 2.3 support
22-
if RUBY_VERSION =~ /^2\.3/
23-
gem 'responders', '~> 2.4'
24-
else
25-
gem 'responders' # rubocop:disable Bundler/DuplicatedGem
4+
gem 'activeadmin', ENV.fetch('ACTIVE_ADMIN_VERSION', '~> 3.2')
5+
gem 'rails', ENV.fetch('RAILS_VERSION', '~> 7.1.0')
6+
gem 'sprockets-rails'
7+
gem 'sassc-rails'
8+
9+
group :test do
10+
gem 'capybara'
11+
gem 'cuprite'
12+
gem 'puma'
13+
gem 'rspec-rails', '~> 6.0'
14+
gem 'sqlite3', '~> 2.0'
2615
end
27-
28-
gem 'sassc-rails', '2.1.2'
29-
gem 'sprockets', '3.7.2'
30-
gem 'sqlite3'

capybara_active_admin.gemspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
1212
spec.description = 'Capybara DSL for fast and easy testing Active Admin applications.'
1313
spec.homepage = 'https://github.com/active_admin_plugins/capybara_active_admin'
1414
spec.license = 'MIT'
15-
spec.required_ruby_version = Gem::Requirement.new('>= 2.3.0')
15+
spec.required_ruby_version = Gem::Requirement.new('>= 3.3.0')
1616

1717
spec.metadata['homepage_uri'] = spec.homepage
1818
spec.metadata['source_code_uri'] = spec.homepage
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
2727
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
2828
spec.require_paths = ['lib']
2929

30-
spec.add_dependency 'activeadmin'
30+
spec.add_dependency 'activeadmin', '>= 3.0', '< 4.0'
3131
# spec.add_dependency 'devise'
3232
spec.add_dependency 'rspec', '~> 3.0'
3333
end
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
//= link_directory ../stylesheets .css
2+
//= link_directory ../javascripts .js
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
//= require active_admin/base
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@import "active_admin/mixins";
2+
@import "active_admin/base";
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
//= link_tree ../images
2+
//= link_directory ../javascripts .js
3+
//= link_directory ../stylesheets .css

spec/dummy/test_application.rb

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,20 +48,20 @@
4848
class TestApplication < Rails::Application
4949
config.root = __dir__
5050
config.session_store :cookie_store, key: 'cookie_store_key'
51-
secrets.secret_token = 'secret_token'
52-
secrets.secret_key_base = 'secret_key_base'
51+
config.secret_key_base = 'secret_key_base_for_testing_only'
5352

5453
config.eager_load = false
5554
config.logger = ActiveRecord::Base.logger
5655

5756
config.hosts = %w[127.0.0.1]
5857

5958
# Configure sprockets assets
60-
config.assets.paths = [File.join(config.root, 'assets')]
59+
config.assets.paths = [File.join(config.root, 'app', 'assets', 'stylesheets'), File.join(config.root, 'app', 'assets', 'javascripts')]
6160
config.assets.unknown_asset_fallback = false
6261
config.assets.digest = false
6362
config.assets.debug = false
6463
config.assets.compile = true
64+
6565
# config.public_file_server.enabled
6666
end
6767

@@ -91,12 +91,16 @@ def log_error(error, causes: [])
9191
return if error.cause.nil? || error.cause == error || causes.include?(error.cause)
9292

9393
causes.push(error)
94-
log_error(error, causes)
94+
log_error(error.cause, causes: causes)
9595
end
9696
end
9797

9898
class User < ActiveRecord::Base
9999
validates :full_name, presence: true
100+
101+
def self.ransackable_attributes(auth_object = nil)
102+
%w[id full_name created_at updated_at]
103+
end
100104
end
101105

102106
module Billing
@@ -105,6 +109,14 @@ class Employee < ActiveRecord::Base
105109
accepts_nested_attributes_for :duties
106110
validates :full_name, presence: true
107111
validates :salary, numericality: { greater_than_or_equal_to: 0.01 }
112+
113+
def self.ransackable_attributes(auth_object = nil)
114+
%w[id full_name salary created_at updated_at]
115+
end
116+
117+
def self.ransackable_associations(auth_object = nil)
118+
%w[duties]
119+
end
108120
end
109121

110122
class Duty < ActiveRecord::Base
@@ -115,6 +127,14 @@ class Duty < ActiveRecord::Base
115127
def common?
116128
duty_type == 'common'
117129
end
130+
131+
def self.ransackable_attributes(auth_object = nil)
132+
%w[id name duty_type employee_id created_at updated_at]
133+
end
134+
135+
def self.ransackable_associations(auth_object = nil)
136+
%w[employee]
137+
end
118138
end
119139
end
120140

spec/rails_helper.rb

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,6 @@
1414
# gem files
1515
require 'capybara/active_admin/rspec'
1616

17-
# Force deprecations to raise an exception.
18-
ActiveSupport::Deprecation.behavior = :raise
19-
2017
# Capybara generic config
2118
Capybara.default_max_wait_time = 5
2219
Capybara.configure do |config|

0 commit comments

Comments
 (0)