Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
d4813ab
♻️ s => spec
pboling Feb 25, 2025
ae66274
🔒️ Optionally sign gem releases
pboling Feb 25, 2025
1eee197
⬆️ Upgrade deps
pboling Feb 25, 2025
58ed492
🚚 LICENSE.txt
pboling Feb 25, 2025
d580db4
📝 CODE_OF_CONDUCT.md
pboling Feb 25, 2025
2e7e13b
📝 CONTRIBUTING.md
pboling Feb 25, 2025
104cc70
📝 SECURITY.md
pboling Feb 25, 2025
b817b96
🔨 dotfiles
pboling Feb 25, 2025
c71afbc
🔥 Remove Rails 3 script
pboling Feb 25, 2025
97e0030
🐛 Fixed Rails 8 compat
pboling Mar 18, 2025
75fb41b
✨ Appraisals
pboling Mar 25, 2025
a340406
👷 GH Actions
pboling Mar 25, 2025
058ee0c
🔒️ Prevent Mass Assignment vulnerability
pboling Mar 25, 2025
786dafb
💚 Allow installing DB adapters on JRuby
pboling Mar 25, 2025
d5fe5c5
💚 More complete dependencies
pboling Mar 25, 2025
30e72b5
💚 Even more complete dependencies
pboling Mar 25, 2025
8b7a937
💚 require deps explicitly
pboling Mar 25, 2025
1090a12
💚 Support for older Rails
pboling Mar 25, 2025
ddee554
🐛 Allow setting site.properties via mass assignment
pboling Mar 25, 2025
c935c30
💚 Min coverage
pboling Mar 25, 2025
b5a8bf7
💚 Fix tests on Rails 6.1
pboling Mar 25, 2025
463e3ba
💚 More fixes for CI
pboling Mar 25, 2025
cd73903
🐛 Modern Ruby compat
pboling Mar 25, 2025
0d48e1a
💚 More fixes
pboling Mar 26, 2025
0a1cf3b
💚 Remove JRuby - too hard to install sqlite3
pboling Mar 26, 2025
bff6819
🚨 Lint update
pboling Mar 26, 2025
4ac7cef
🚨 Lint update
pboling Mar 26, 2025
8db857f
🔥 TruffleRuby doesn't seem to work with ActionMailer's method_missing…
pboling Mar 26, 2025
05d7394
⬆️ bundler 2.6.6
pboling Mar 26, 2025
5902c61
🐛 Prevent double loading of engine
pboling Mar 26, 2025
9cc28aa
🚚 Move Signup factory to Masq lib
pboling Mar 26, 2025
9f51014
🥅 Better error handling
pboling Mar 26, 2025
0892e54
🚨 Linting
pboling Mar 26, 2025
32daa47
👷 Make SimpleCov work with MiniTest
pboling Mar 26, 2025
17652e0
➕ minitest-retry
pboling Mar 26, 2025
16aa61d
🔧 minitest-retry
pboling Mar 26, 2025
514e5a1
🔧 minitest-retry
pboling Mar 26, 2025
5069fa9
📝 Documentation
pboling Mar 26, 2025
582c3bb
💚 Improved test
pboling Mar 26, 2025
10a94db
🎨 Error reason for auth failure
pboling Mar 26, 2025
dfd5784
💚 Fix tests
pboling Mar 26, 2025
3c6a51c
💚 Many fixes
pboling Mar 26, 2025
2ff45b8
🚨 Lint lock update
pboling Mar 26, 2025
50ec5e7
🐛 Fix Rails 5.2 and 6.0 support
pboling Mar 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Run any command in this library's bin/ without the bin/ prefix!
PATH_add bin

# Only add things to this file that should be shared with the team.

# **dotenv** (See end of file for .env.local integration)
# .env would override anything in this file, if enabled.
# .env is a DOCKER standard, and if we use it, it would be in deployed, or DOCKER, environments.
# Override and customize anything below in your own .env.local
# If you are using dotenv and not direnv,
# copy the following `export` statements to your own .env file.

### General Ruby ###
# Turn off Ruby Warnings about deprecated code
# export RUBYOPT="-W0"

### External Testing Controls
export K_SOUP_COV_DO=true # Means you want code coverage
# Available formats are html, xml, rcov, lcov, json, tty
export K_SOUP_COV_COMMAND_NAME="Minitest Coverage"
export K_SOUP_COV_FORMATTERS="html,tty"
export K_SOUP_COV_MIN_BRANCH=69 # Means you want to enforce X% branch coverage
export K_SOUP_COV_MIN_LINE=88 # Means you want to enforce X% line coverage
export K_SOUP_COV_MIN_HARD=true # Means you want the build to fail if the coverage thresholds are not met
export K_SOUP_COV_MULTI_FORMATTERS=true
export MAX_ROWS=1 # Setting for simplecov-console gem for tty output, limits to the worst N rows of bad coverage

# External Debugging Controls
export REQUIRE_BENCH=false

# Internal Debugging Controls
export DEBUG=false # do not allow byebug statements (override in .env.local)

# .env would override anything in this file, if `dotenv` is uncommented below.
# .env is a DOCKER standard, and if we use it, it would be in deployed, or DOCKER, environments,
# and that is why we generally want to leave it commented out.
# dotenv

# .env.local will override anything in this file.
dotenv_if_exists .env.local
13 changes: 13 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# These are supported funding model platforms

buy_me_a_coffee: pboling
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
github: [pboling] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
issuehunt: pboling # Replace with a single IssueHunt username
ko_fi: pboling # Replace with a single Ko-fi username
liberapay: pboling # Replace with a single Liberapay username
open_collective: # Replace with a single Open Collective username
patreon: galtzo # Replace with a single Patreon username
polar: pboling
thanks_dev: u/gh/pboling
tidelift: rubygems/masq2 # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
13 changes: 13 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
version: 2
updates:
- package-ecosystem: bundler
directory: "/"
schedule:
interval: "daily"
open-pull-requests-limit: 10
ignore:
- dependency-name: "rubocop-lts"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"
70 changes: 70 additions & 0 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"

on:
push:
branches: [ main, "*-stable" ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main, "*-stable" ]
schedule:
- cron: '35 1 * * 5'

jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write

strategy:
fail-fast: false
matrix:
language: [ 'ruby' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support

steps:
- name: Checkout repository
uses: actions/checkout@v4

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main

# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v3

# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl

# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language

#- run: |
# make bootstrap
# make release

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
121 changes: 121 additions & 0 deletions .github/workflows/coverage.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
name: Test Coverage

env:
K_SOUP_COV_MIN_BRANCH: 2
K_SOUP_COV_MIN_LINE: 46
K_SOUP_COV_MIN_HARD: true
K_SOUP_COV_DO: true
K_SOUP_COV_COMMAND_NAME: "RSpec Coverage"

on:
push:
branches:
- 'main'
tags:
- '!*' # Do not execute on tags
pull_request:
branches:
- '*'
# Allow manually triggering the workflow.
workflow_dispatch:

permissions:
contents: read

# Cancels all previous workflow runs for the same branch that have not yet completed.
concurrency:
# The concurrency group contains the workflow name and the branch name.
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true

jobs:
coverage:
name: Code Coverage on ${{ matrix.ruby }}@current
if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
strategy:
fail-fast: false
matrix:
include:
# Coverage
- ruby: "ruby"
appraisal: "coverage"
exec_cmd: "rake test"
gemfile: "Appraisal.root"
rubygems: latest
bundler: latest

steps:
- uses: amancevice/setup-code-climate@v2
name: CodeClimate Install
if: ${{ github.event_name != 'pull_request' }}
with:
cc_test_reporter_id: ${{ secrets.CC_TEST_REPORTER_ID }}

- name: Checkout
uses: actions/checkout@v4

- name: Setup Ruby & RubyGems
uses: ruby/setup-ruby@v1
with:
ruby-version: "${{ matrix.ruby }}"
rubygems: "${{ matrix.rubygems }}"
bundler: "${{ matrix.bundler }}"
bundler-cache: false

- name: CodeClimate Pre-build Notification
run: cc-test-reporter before-build
if: ${{ github.event_name != 'pull_request' }}
continue-on-error: ${{ matrix.experimental != 'false' }}

# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
# We need to do this first to get appraisal installed.
# NOTE: This does not use the main Gemfile at all.
- name: Install Root Appraisal
run: bundle
- name: Appraisal for ${{ matrix.appraisal }}
run: bundle exec appraisal ${{ matrix.appraisal }} bundle
- name: Tests for ${{ matrix.ruby }}@current via ${{ matrix.exec_cmd }}
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}

- name: CodeClimate Post-build Notification
run: cc-test-reporter after-build
if: ${{ github.event_name != 'pull_request' }}
continue-on-error: ${{ matrix.experimental != 'false' }}

- name: Code Coverage Summary Report
uses: irongut/[email protected]
if: ${{ github.event_name == 'pull_request' }}
with:
filename: ./coverage/coverage.xml
badge: true
fail_below_min: true
format: markdown
hide_branch_rate: false
hide_complexity: true
indicators: true
output: both
thresholds: '69 80'
continue-on-error: ${{ matrix.experimental != 'false' }}

- name: Add Coverage PR Comment
uses: marocchino/sticky-pull-request-comment@v2
if: ${{ github.event_name == 'pull_request' }}
with:
recreate: true
path: code-coverage-results.md
continue-on-error: ${{ matrix.experimental != 'false' }}

- name: Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: ${{ matrix.experimental != 'false' }}

- name: Upload results to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
75 changes: 75 additions & 0 deletions .github/workflows/current.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Targets the evergreen latest release of ruby, truffleruby, and jruby
name: Current

env:
K_SOUP_COV_DO: false

on:
push:
branches:
- 'main'
tags:
- '!*' # Do not execute on tags
pull_request:
branches:
- '*'
# Allow manually triggering the workflow.
workflow_dispatch:

permissions:
contents: read

# Cancels all previous workflow runs for the same branch that have not yet completed.
concurrency:
# The concurrency group contains the workflow name and the branch name.
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true

jobs:
test:
name: Specs ${{ matrix.ruby }}@${{ matrix.appraisal }}
if: "!contains(github.event.commits[0].message, '[ci skip]') && !contains(github.event.commits[0].message, '[skip ci]')"
runs-on: ubuntu-latest
continue-on-error: ${{ matrix.experimental || endsWith(matrix.ruby, 'head') }}
env: # $BUNDLE_GEMFILE must be set at job level, so it is set for all steps
BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}.gemfile
strategy:
matrix:
include:
# Ruby 3.4, Rails 7.2
- ruby: "ruby"
appraisal: "rails-7-2"
exec_cmd: "rake test"
gemfile: "Appraisal.root"
rubygems: latest
bundler: latest

# Ruby 3.4, Rails 8.0
- ruby: "ruby"
appraisal: "rails-8-0"
exec_cmd: "rake test"
gemfile: "Appraisal.root"
rubygems: latest
bundler: latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Ruby & RubyGems
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby }}
rubygems: ${{ matrix.rubygems }}
bundler: ${{ matrix.bundler }}
bundler-cache: false

# Raw `bundle` will use the BUNDLE_GEMFILE set to matrix.gemfile (i.e. Appraisal.root)
# We need to do this first to get appraisal installed.
# NOTE: This does not use the main Gemfile at all.
- name: Install Root Appraisal
run: bundle
- name: Appraisal for ${{ matrix.ruby }}@${{ matrix.appraisal }}
run: bundle exec appraisal ${{ matrix.appraisal }} bundle
- name: Tests for ${{ matrix.ruby }}@${{ matrix.appraisal }} via ${{ matrix.exec_cmd }}
run: bundle exec appraisal ${{ matrix.appraisal }} bundle exec ${{ matrix.exec_cmd }}
20 changes: 20 additions & 0 deletions .github/workflows/dependency-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Dependency Review Action
#
# This Action will scan dependency manifest files that change as part of a Pull Request, surfacing known-vulnerable versions of the packages declared or updated in the PR. Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable packages will be blocked from merging.
#
# Source repository: https://github.com/actions/dependency-review-action
# Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement
name: 'Dependency Review'
on: [pull_request]

permissions:
contents: read

jobs:
dependency-review:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v4
- name: 'Dependency Review'
uses: actions/dependency-review-action@v4
Loading
Loading