Skip to content
This repository was archived by the owner on May 18, 2025. It is now read-only.

Commit a04aa35

Browse files
committed
test: Update test suite and dev setup
1 parent 858e5dc commit a04aa35

22 files changed

Lines changed: 317 additions & 91 deletions

Gemfile

Lines changed: 59 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,63 @@
22

33
source 'https://rubygems.org'
44

5-
gemspec
6-
7-
group :development, :test do
8-
gem 'puma'
9-
gem 'sassc'
10-
gem 'sqlite3'
11-
12-
# Testing
13-
gem 'capybara'
14-
gem 'cuprite'
15-
gem 'rspec_junit_formatter'
16-
gem 'rspec-rails'
17-
18-
# Linters
19-
gem 'fasterer'
20-
gem 'rubocop'
21-
gem 'rubocop-packaging'
22-
gem 'rubocop-performance'
23-
gem 'rubocop-rails'
24-
gem 'rubocop-rspec'
25-
26-
# Tools
27-
gem 'pry-rails'
5+
def eval_version(dependency, version)
6+
return [dependency] if version.empty?
7+
8+
version.count('.') < 2 ? [dependency, "~> #{version}.0"] : [dependency, version]
9+
end
10+
11+
if ENV['DEVEL'] == '1'
12+
gem 'activeadmin_medium_editor', path: './'
13+
else
14+
gemspec
2815
end
16+
17+
ruby_ver = ENV.fetch('RUBY_VERSION', '')
18+
19+
rails_ver = ENV.fetch('RAILS_VERSION', '')
20+
rails = eval_version('rails', rails_ver)
21+
gem(*rails)
22+
23+
active_admin_ver = ENV.fetch('ACTIVEADMIN_VERSION', '')
24+
active_admin = eval_version('activeadmin', active_admin_ver)
25+
gem(*active_admin)
26+
27+
ruby32 = ruby_ver.empty? || Gem::Version.new(ruby_ver) >= Gem::Version.new('3.2')
28+
rails72 = rails_ver.empty? || Gem::Version.new(rails_ver) >= Gem::Version.new('7.2')
29+
sqlite3 = ruby32 && rails72 ? ['sqlite3'] : ['sqlite3', '~> 1.4']
30+
gem(*sqlite3)
31+
32+
gem 'zeitwerk', '~> 2.6.18' unless ruby32
33+
34+
# NOTE: to avoid error: uninitialized constant ActiveSupport::LoggerThreadSafeLevel::Logger
35+
gem 'concurrent-ruby', '1.3.4'
36+
37+
# Misc
38+
gem 'bigdecimal'
39+
gem 'csv'
40+
gem 'mutex_m'
41+
gem 'puma'
42+
gem 'sassc'
43+
gem 'sprockets-rails'
44+
45+
# Testing
46+
gem 'capybara'
47+
gem 'cuprite'
48+
gem 'rspec_junit_formatter'
49+
gem 'rspec-rails'
50+
gem 'simplecov', require: false
51+
gem 'super_diff'
52+
53+
# Linters
54+
gem 'fasterer'
55+
gem 'rubocop'
56+
gem 'rubocop-capybara'
57+
gem 'rubocop-packaging'
58+
gem 'rubocop-performance'
59+
gem 'rubocop-rails'
60+
gem 'rubocop-rspec'
61+
gem 'rubocop-rspec_rails'
62+
63+
# Tools
64+
gem 'pry-rails'

Makefile

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
include extra/.env
2+
3+
help:
4+
@echo -e "${COMPOSE_PROJECT_NAME} - Main project commands:\n\
5+
make up # starts the dev services (optional env vars: RUBY / RAILS / ACTIVEADMIN)\n\
6+
make specs # run the tests (after up)\n\
7+
make lint # run the linters (after up)\n\
8+
make server # run the server (after up)\n\
9+
make shell # open a shell (after up)\n\
10+
make down # cleanup (after up)\n\
11+
Example: RUBY=3.2 RAILS=7.1 ACTIVEADMIN=3.2.0 make up"
12+
13+
# System commands
14+
15+
build:
16+
@rm -f Gemfile.lock spec/dummy/db/*.sqlite3
17+
@docker compose -f extra/docker-compose.yml build
18+
19+
db_reset:
20+
@docker compose -f extra/docker-compose.yml run --rm app bin/rails db:create db:migrate db:test:prepare
21+
22+
up: build db_reset
23+
@docker compose -f extra/docker-compose.yml up
24+
25+
shell:
26+
@docker compose -f extra/docker-compose.yml exec app bash
27+
28+
down:
29+
@docker compose -f extra/docker-compose.yml down --volumes --rmi local --remove-orphans
30+
31+
# App commands
32+
33+
seed:
34+
@docker compose -f extra/docker-compose.yml exec app bin/rails db:seed
35+
36+
console: seed
37+
@docker compose -f extra/docker-compose.yml exec app bin/rails console
38+
39+
lint:
40+
@docker compose -f extra/docker-compose.yml exec app bin/rubocop
41+
42+
server: seed
43+
@rm -f spec/dummy/tmp/pids/server.pid
44+
@docker compose -f extra/docker-compose.yml exec app bin/rails server -b 0.0.0.0 -p ${SERVER_PORT}
45+
46+
specs:
47+
@docker compose -f extra/docker-compose.yml exec app bin/rspec --fail-fast

Rakefile

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,16 @@
11
# frozen_string_literal: true
22

3+
begin
4+
require 'bundler/setup'
5+
rescue LoadError
6+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
7+
end
8+
9+
APP_RAKEFILE = File.expand_path("spec/dummy/Rakefile", __dir__)
10+
load 'rails/tasks/engine.rake'
11+
12+
load 'rails/tasks/statistics.rake'
13+
314
require 'bundler/gem_tasks'
415

516
begin

extra/.bashrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
alias ls='ls --color'
2+
alias ll='ls -l'
3+
alias la='ls -la'

extra/.env

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
COMPOSE_PROJECT_NAME=activeadmin_medium_editor
2+
3+
BUNDLER_VERSION=2.5.23
4+
SERVER_PORT=4000
5+
6+
UID=1000
7+
GID=1000

extra/Dockerfile

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
ARG RUBY_IMAGE=ruby:3
2+
FROM ${RUBY_IMAGE}
3+
4+
ENV DEBIAN_FRONTEND=noninteractive
5+
ENV DEVEL=1
6+
ENV LANG=C.UTF-8
7+
8+
RUN apt-get update -qq
9+
RUN apt-get install -yqq --no-install-recommends build-essential chromium less libyaml-dev nano netcat-traditional pkg-config
10+
11+
ARG BUNDLER_VERSION
12+
RUN gem install bundler -v ${BUNDLER_VERSION}
13+
RUN echo 'gem: --no-document' > /etc/gemrc
14+
15+
ARG UID
16+
RUN useradd -u $UID --shell /bin/bash app
17+
18+
RUN mkdir -p /home/app && chown -R app:app /home/app
19+
20+
ARG RAILS_VERSION
21+
ENV RAILS_VERSION=$RAILS_VERSION
22+
23+
ARG ACTIVEADMIN_VERSION
24+
ENV ACTIVEADMIN_VERSION=$ACTIVEADMIN_VERSION
25+
26+
WORKDIR /app
27+
COPY . /app
28+
RUN bundle install
29+
RUN chown -R app:app /usr/local/bundle
30+
31+
RUN ln -s /app/extra/.bashrc /home/app/.bashrc

extra/Dockerfile.dockerignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Ignore everything but the required files for bundle install
2+
/**/*
3+
4+
!/*.gemspec
5+
!/Gemfile
6+
!/lib

extra/README.md

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

extra/dev_setup.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/bin/sh
2+
3+
export DEVEL=1
4+
5+
export RAILS_VERSION=7.2.2.1
6+
export ACTIVEADMIN_VERSION=3.3.0

extra/development.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
## Development
2+
3+
### Dev setup
4+
5+
There are 2 ways to interact with this project:
6+
7+
1) Using Docker:
8+
9+
```sh
10+
make up # starts the dev services (optional env vars: RUBY / RAILS / ACTIVEADMIN)
11+
make specs # run the tests (after up)
12+
make lint # run the linters (after up)
13+
make server # run the server (after up)
14+
make shell # open a shell (after up)
15+
make down # cleanup (after up)
16+
17+
# Example using specific versions:
18+
RUBY=3.2 RAILS=7.1 ACTIVEADMIN=3.2.0 make up
19+
```
20+
21+
2) With a local setup:
22+
23+
```sh
24+
# Dev setup (set the required envs):
25+
source extra/dev_setup.sh
26+
# Install dependencies:
27+
bundle update
28+
# Run server (or any command):
29+
bin/rails s
30+
# To try different versions of Rails/ActiveAdmin edit extra/dev_setup.sh
31+
```

0 commit comments

Comments
 (0)