appraisal-rb Logo by Aboling0, CC BY-SA 4.0 kettle-rb Logo by Aboling0, CC BY-SA 4.0 floss-funding Logo by Aboling0, CC BY-SA 4.0 galtzo-floss Logo by Aboling0, CC BY-SA 4.0 omniauth Logo by (presumed) tomeara, (presumed) MIT resque Logo by Resque development team, MIT rubocop-lts Logo by Aboling0, CC BY-SA 4.0 oauth Logo by Chris Messina, CC BY-SA 3.0 ruby-openid Logo by Aboling0, CC BY-SA 4.0

Projects

Open source projects I maintain across various platforms. For an interactive presentation of this list with useful filters, head over to galtzo.com.

active_security

Disallow insecure, unscoped, finds

rails activerecord
View active_security blog →

activerecord-tablefree

ActiveRecord Tablefree Models provides a simple mixin for creating models that are not bound to the database. Take advantage of ActiveRecord features like validation, relationships, and nested_attributes.

rails activerecord validate
View activerecord-tablefree blog →

activerecord-transactionable

Getting transactions right is hard, and this gem makes it easier.

rails activerecord
View activerecord-transactionable blog →

activesupport-broadcast_logger

Rails v8 ActiveSupport::BroadcastLogger, fixed & backported to Rails v5.2+ & Ruby 2.7+

rails activesupport log
View activesupport-broadcast_logger blog →

activesupport-logger

Rails v8 ActiveSupport::Logger backported to Rails v5.2+ & Ruby 2.7+

rails activesupport log
View activesupport-logger blog →

activesupport-tagged_logging

Rails v8 ActiveSupport::TaggedLogging, fixed & backported to Rails v5.2+ & Ruby 2.7+

rails activesupport log
View activesupport-tagged_logging blog →

anonymous_active_record

Replacement for broken Class.new(ActiveRecord::Base)

rails activerecord
View anonymous_active_record blog →

skywalking-eyes

A full-featured license tool to check and fix license headers and resolve dependencies' licenses. I added compatibility with rubygems and bundler. Enhanced the license checker dataset to include all licenses on spdx.org. Added configurations for ASF Category A and B licenses. Enabled specification of FSF Free/Libre and OSI Approved requirements. Learn how to add it to your project!

license GHA cli shell
View skywalking-eyes blog →

appraisal2

Appraisal2 integrates with bundler and rake to test your library against different versions of dependencies in repeatable scenarios called "appraisals."

test harness bundler
View appraisal2 blog →

archivist-client

archivist-client queries archive.org for book data and downloads some things.

shell api cli
View archivist-client blog →

awesome_search

Organize complicated search results

search
View awesome_search blog →

awesome-sponsorships

💖 An Open Source Funding How To Awesome List: checklist and inspiration to earn more as a FLOSS developer

funding markdown awesome-list
View awesome-sponsorships blog →

bash_step

Bash Step Function Library

shell cli
View bash_step blog →

bsfl

Bash Script Function Library

shell cli
View bsfl blog →

cacheable_flash

Allows caching of pages with flash messages by rendering flash messages from a cookie using JavaScript, instead of statically in your Rails view template. Flash contents are converted to JSON and placed in a cookie by an after_filter (default) or a Rack Middleware (option).

toast rails
View cacheable_flash blog →

capistrano_mailer

Capistrano Deployment Email Notification. Keep the whole team informed of each release!

release email
View capistrano_mailer blog →

celluloid-io-pg-listener

Asynchronously LISTEN for Postgresql NOTIFY messages with payloads and Do Something

async
View celluloid-io-pg-listener blog →

controller_validator

Use the familiar ActiveModel::Errors pattern for controller validations

rails validate
View controller_validator blog →

csv_pirate

CsvPirate is the easy way to create a CSV of essentially anything in Ruby, in full pirate regalia. It works better if you are wearing a tricorne!

rails activerecord csv
View csv_pirate blog →

debug_logging

Unobtrusive debug logging for Ruby. NO LITTERING. Automatically log selected methods and their arguments as they are called at runtime!

log debug
View debug_logging blog →

destination_errors

Useful when a presenter deals with multiple objects that may enter into error states, and the errors need to be collected at a single point.

rails presenter activerecord error-handle
View destination_errors blog →

dry_views

Provides extensions to ActionView::Helpers::CaptureHelper: content_for_with_default, no_content_for, and an enhanced content_for that plays nice with friends

rails view
View dry_views blog →

dynamoid

Dynamoid is an ORM for Amazon's DynamoDB that supports offline development, associations, querying, and everything else you'd expect from an ActiveRecord-style replacement.

dynamodb aws api
View dynamoid blog →

each_in_batches

Batch Processing of Records with Blocks in Rails

rails activerecord
View each_in_batches blog →

flag_shih_tzu

Bit fields for ActiveRecord - store multiple boolean flags in a single integer column

rails activerecord bitfields
View flag_shih_tzu blog →

floss_funding

Help overlooked open source projects - the ones at the bottom of the stack, and the dev dependencies - by funding them.

funding wip experimental
View floss_funding blog →

gem_bench

* Benchmark different versions of same or similar gems * Copy & Re-namespace any gem to benchmark side-by-side with `benchmarks-ips` * Enforce Gemfile version constraints * Regex search across all installed gem's source code to find issues quickly * Trim down app load times by keeping your worst players on the bench (useful for beating Heroku slug load time cutoff)

perf benchmark debug bundler regex
View gem_bench blog →

gitmoji-regex

😜 A regular expression matching Gitmoji (a subset of Unicode Emoji) symbolsFund overlooked open source projects - bottom of stack, dev/test dependencies: floss-funding.dev

git regex
View gitmoji-regex blog →

humorous_log_formatter

Humorous Log Levels and Color For Rails. Customizable!

log
View humorous_log_formatter blog →

include_with_respect

Find out if your Module include/extend hooks are misbehaving!

test
View include_with_respect blog →

json_schemer-fuzz

Fuzz generator for json_schemer

test fuzz
View json_schemer-fuzz blog →

kettle-dev

🍲 Kettle::Dev is a meta tool from kettle-rb to streamline development and testing. Acts as a shim dependency, pulling in many other dependencies, to give you OOTB productivity with a RubyGem, or Ruby app project. Configures a complete set of Rake tasks, for all the libraries is brings in, so they arrive ready to go. Fund overlooked open source projects - bottom of stack, dev/test dependencies: floss-funding.dev

harness release markdown git GHA license rake env debug shell cli
View kettle-dev blog →

kettle-soup-cover

A Covered Kettle of Test Coverage SOUP (Software of Unknown Provenance) Four-line SimpleCov config, w/ curated, opinionated, pre-configured, dependencies for every CI platform, batteries included.

test coverage env
View kettle-soup-cover blog →

kettle-test

🍲 Kettle::Test is a meta tool from kettle-rb to streamline testing. Acts as a shim dependency, pulling in many other dependencies, to give you OOTB productivity with a RubyGem, or Ruby app project. Configures RSpec w/ syntactic sugar to make writing tests, and testing more scenarios, easier.Configures each dependency library for proper use in the test suite, so they arrive ready to go. Fund overlooked open source projects - bottom of stack, dev/test dependencies: floss-funding.dev

harness test rspec rake env
View kettle-test blog →

letter_group

Organize data results from raw sql queries (as with PGresult, or Dossier) intelligently.

hash
View letter_group blog →

library_tree

Builds a tree of module inclusion of a target module into other modules

wip experimental
View library_tree blog →

logos

🪵 A resource for logos, with proper attribution information, including license and copyright, for open source projects I care about.

markdown license
View logos blog →

masq

Masq supports OpenID 2.0 and supports SReg, AX (fetch and store requests) and PAPE as well as some custom additions like multi-factor authentication using a yubikey

openid auth security api
View masq blog →

masq2

Originally a fork. Has been merged back to the original gem.

openid auth security api
View masq2 blog →

month-serializer

Serialize Month objects to Integer

time math serialize
View month-serializer blog →

oauth

🔑 A Ruby wrapper for the original OAuth 1.0 / 1.0a spec.

oauth auth security api
View oauth blog →

oauth-tty

🖥️ OAuth 1.0 / 1.0a TTY Command Line Interface

oauth auth security tty api
View oauth-tty blog →

oauth2

Ruby OAuth 2.0 framework for building OAuth providers and clients

oauth auth security api
View oauth2 blog →

omniauth-identity

Traditional username/password based authentication system for OmniAuth

auth security api
View omniauth-identity blog →

omniauth-jwt

An OmniAuth strategy to accept JWT-based single sign-on.

auth security api
View omniauth-jwt blog →

omniauth-jwt2

Originally a fork. Has been merged back to the original gem.

auth security api
View omniauth-jwt2 blog →

omniauth-ldap

A LDAP strategy for OmniAuth.

auth security api
View omniauth-ldap blog →

omniauth-openid

OpenID (not OIDC) strategy for OmniAuth.

openid auth security api
View omniauth-openid blog →

open_id_authentication

Provides a thin wrapper around the excellent rack-openid2 gem.

openid auth security api
View open_id_authentication blog →

os

Easily determine which OS your Ruby code is running on.

test
View os blog →

pretty_feed

PrettyFeed provides a modulizer you can include in a job, worker, class, rake task, etc, which allows for simple pass/fail logging colorization. Defaults are `truthy: 'green'` and `falsey: 'red'`.

log debug
View pretty_feed blog →

qfill

Advanced Queue Transformation

resque queue math
View qfill blog →

rack-insight

Debugging toolbar for Rack applications implemented as middleware. Based on logical-insight and rack-bug.

rack view
View rack-insight blog →

rack-openid

Provides a more HTTPish API around the ruby-openid library

openid auth security api
View rack-openid blog →

rack-openid2

Originally a fork. Has been merged back to the original gem.

openid auth security api
View rack-openid2 blog →

rack-toolbar

Provides an easy way to create Rack Middleware that injects things into the response body. Extracted from rack-insight.

rack view
View rack-toolbar blog →

rails_env_local

If existing infrastructure for deployed environments has names that conflict with Rails' default non-deployed environments, e.g., "development" and "test", this gem allows renaming them locally. You can rename "development" to "localdev", for example, to prevent confusion. But before using this gem, consider whether renaming your existing environments to remove the conflict might be a better long-term solution.

rails env
View rails_env_local blog →

react-rails-benchmark_renderer

Concern::Instrumentation Plugin for React::Rails Render Benchmarking with a reference implementation

rails react view log
View react-rails-benchmark_renderer blog →

remit

An API for using the Amazon Flexible Payment Service (FPS).

payment aws api
View remit blog →

require_bench

Ruby app loading slowly, or never? Discover bootstrapping issues in Ruby by logging/benchmarking/timing-out/rescuing 'Kernel.require' & 'load'

perf benchmark debug log error-handle
View require_bench blog →

resque

Resque is a Redis-backed Ruby library for creating background jobs, placing them on multiple queues, and processing them later.

resque queue shell cli
View resque blog →

resque-lonely_job

Ensures that for a given queue, only one worker is working on a job at any given time. Example: require 'resque/plugins/lonely_job' class StrictlySerialJob extend Resque::Plugins::LonelyJob @queue = :serial_work def self.perform # only one at a time in this block, no parallelism allowed for this # particular queue end end

resque queue uniq
View resque-lonely_job blog →

resque-unique_at_runtime

Ensures that for a given queue, only one worker is working on a job at any given time. Example: require 'resque/plugins/unique_at_runtime' class StrictlySerialJob include Resque::Plugins::UniqueAtRuntime @queue = :serial_work def self.perform # only one at a time in this block, no parallelism allowed for this # particular queue end end

resque queue uniq
View resque-unique_at_runtime blog →

resque-unique_by_arity

Configure resque-unique_in_queue and resque-unique_at_runtime uniqueness by arity of perform method, with automated cleanup tools

resque queue uniq
View resque-unique_by_arity blog →

resque-unique_in_queue

A resque plugin that ensures job uniqueness at enqueue time.

resque queue uniq
View resque-unique_in_queue blog →

rots

Ruby OpenID Test Server (ROTS) provides a basic OpenID server made in top of the Rack gem. With this small server, you can make dummy OpenID request for testing purposes, the success of the response will depend on a parameter given on the URL of the authentication request.

openid auth security test mock
View rots blog →

rspec-block_is_expected

subject { Integer(nil) }; it('raises') { block_is_expected.to raise_error(TypeError) }

rspec test error-handle
View rspec-block_is_expected blog →

rspec-pending_for

⏳️ Mark specs pending or skipped for specific Ruby engine (e.g. MRI or JRuby) & versions, or version ranges. Fund overlooked open source projects - bottom of stack, dev/test dependencies: floss-funding.dev

rspec test
View rspec-pending_for blog →

rspec-stubbed_env

Stub or hide environment variables in a scoped context for testing stub_env('REDIS_URL' => 'redis://localhost:6379/') hide_env('SESSION_SECRET')

rspec test env mock
View rspec-stubbed_env blog →

rubocop-lts

Configure RuboCop + a bevy of friends to gradually lint Ruby code

rubocop
View rubocop-lts blog →

rubocop-ruby1_8

Configure RuboCop + a bevy of friends to gradually lint Ruby 1.8 code

rubocop
View rubocop-ruby1_8 blog →

rubocop-ruby1_9

Configure RuboCop + a bevy of friends to gradually lint Ruby 1.9 code

rubocop
View rubocop-ruby1_9 blog →

rubocop-ruby2_0

Configure RuboCop + a bevy of friends to gradually lint Ruby 2.0 code

rubocop
View rubocop-ruby2_0 blog →

rubocop-ruby2_1

Configure RuboCop + a bevy of friends to gradually lint Ruby 2.1 code

rubocop
View rubocop-ruby2_1 blog →

rubocop-ruby2_2

Configure RuboCop + a bevy of friends to gradually lint Ruby 2.2 code

rubocop
View rubocop-ruby2_2 blog →

rubocop-ruby2_3

Configure RuboCop + a bevy of friends to gradually lint Ruby 2.3 code

rubocop
View rubocop-ruby2_3 blog →

rubocop-ruby2_4

Configure RuboCop + a bevy of friends to gradually lint Ruby 2.4 code

rubocop
View rubocop-ruby2_4 blog →

rubocop-ruby2_5

Configure RuboCop + a bevy of friends to gradually lint Ruby 2.5 code

rubocop
View rubocop-ruby2_5 blog →

rubocop-ruby2_6

Configure RuboCop + a bevy of friends to gradually lint Ruby 2.6 code

rubocop
View rubocop-ruby2_6 blog →

rubocop-ruby2_7

Configure RuboCop + a bevy of friends to gradually lint Ruby 2.7 code

rubocop
View rubocop-ruby2_7 blog →

rubocop-ruby3_0

Configure RuboCop + a bevy of friends to gradually lint Ruby 3.0 code

rubocop
View rubocop-ruby3_0 blog →

rubocop-ruby3_1

Configure RuboCop + a bevy of friends to gradually lint Ruby 3.1 code

rubocop
View rubocop-ruby3_1 blog →

rubocop-ruby3_2

Configure RuboCop + a bevy of friends to gradually lint Ruby 3.2 code

rubocop
View rubocop-ruby3_2 blog →

ruby-openid

A library for consuming and serving OpenID identities.

openid auth security api
View ruby-openid blog →

ruby-openid2

Originally a fork. Has been merged back to the original gem.

openid auth security api
View ruby-openid2 blog →

sanitize_email

Email Condom for your Ruby Server. In Rails, Sinatra, et al, or simply the mail gem: Aids in development, testing, qa, and production troubleshooting of email issues without worrying that emails will get sent to actual live addresses.

rails email test rspec
View sanitize_email blog →

seed_migration

Rails gem for Data Migrations

rails activerecord migration
View seed_migration blog →

sequential_file

Create Files Named Sequentially Intelligently

shell
View sequential_file blog →

service_actor-promptable

TTY Prompt plugin for your service objects for your application logic

service-objects tty
View service_actor-promptable blog →

shields-badge

Shields::Badge.gem_total_downloads(path_parameters: {gem: 'rails'}) => "[![RubyGems Total Downloads](https://img.shields.io/gem/dt/rails?)](https://rubygems.org/gems/rails)"

markdown
View shields-badge blog →

shiftable

Move single records (has_one) or collections (has_many) from one parent (belongs_to) to another

rails activerecord
View shiftable blog →

silent_stream

🔕 (formerly) ActiveSupport Kernel Reporting Detritus with a few enhancementsFund overlooked open source projects - bottom of stack, dev/test dependencies: floss-funding.dev

test log rspec
View silent_stream blog →

simple_column-scopes

Dynamic modules which define dynamic methods for scopes based on a dynamic array of column names

rails activerecord
View simple_column-scopes blog →

snaky_hash

A Hashie::Mash joint to make #snakelife better

serialize
View snaky_hash blog →

spyke-connection_lambda

Dynamic Spyke API connection plugin for the Enterprise Cloud

rails activerecord api
View spyke-connection_lambda blog →

stackable_flash

Allows flashes to stack intelligently, while preserving existing behavior of the Rails FlashHash

toast
View stackable_flash blog →

standard-rubocop-lts

Enables Ruby projects to more confidently support even the most finely-aged Rubies. Part of the rubocop-lts family.

rubocop
View standard-rubocop-lts blog →

status_tag

Provides content_tag_for method signature to create customizable and logic-gated labels from objects. Also includes a presenter base class to allow any Ruby web framework to create logic around HTML tags

rails presenter view
View status_tag blog →

stone_checksums

🗿 Generate both SHA256 & SHA512 checksums into the checksums directory, and git commit them. gem install stone_checksums Then, use the rake task or the script: rake build:generate_checksums gem_checksums Control options with ENV variables! Fund overlooked open source projects - bottom of stack, dev/test dependencies: floss-funding.dev

security release cli shell rubygems
View stone_checksums blog →

strict_states

Safely access state machine states with guarantee that there are no typos. Compatible with all Ruby state machine libraries.

state-machine validate
View strict_states blog →

super_exception_notifier

In the Rails v2 era, this was a popular fork of exception_notification, with many extra features. It is now deprecated in favor of the original gem.

email error-handle
View super_exception_notifier blog →

timecop-rspec

⌚️ Timecop::Rspec provides Timecop time-machines for RSpec that allow youto time-travel test examples, context/describes, and/or your entire test suite. Find out how your code will behave... in the future! Fund overlooked open source projects - bottom of stack, dev/test dependencies: floss-funding.dev

rspec test time
View timecop-rspec blog →

undrive_google

🏴 Liberate files from your Google Drive with transformations

api shell cli
View undrive_google blog →

version_gem

🔖 Versions are good. Versions are cool. Versions will win.

semver release test
View version_gem blog →

warden_oauth

warden_oauth will help you create oauth authentication strategies using the oauth helper method on the Warden::Manager config setup

oauth auth security api
View warden_oauth blog →

yacs

Yet Another Crypto Scanner; Alternative Front End Demo for DEX

websocket api react
View yacs blog →