I have been writing RubyGems since 2008, and Rails plugins since 2005.

Contributions to the community

Along the way I have contributed to many projects, including rails’ active-record (PR #20921), annotate_models (PR #473), hashie (PR #313, PR #314, PR #315, PR #316, and PR #318), git-reflow (PR #155, and PR #159), memoist (PR #33), month (PR #7), neography (PR #74 and PR #104), masonry-rails (PR #14), zues-parallel_tests (PR #28), rusen (PR #5, and PR #6), gem-release (PR #37 and PR #38), gem-dependent (PR #11), RubyGems Guides (PR #211), sidekiq-unique-jobs (PR #194), keep-a-changelog (PR #224), rchardet (PR #28), clearance (PR #769), wwtd (PR #48), capistrano-ssh-doctor (PR #11), google-drive-ruby (PR #282), subroutine (PR #4), clockwork (PR #14), ruby toolbox catalog (PR #12), amazon-awis (PR #2), and appraisal (PR #128).

Other Stuff: my Bash work→, my JavaScript work→, my Older Ruby work→

Ruby: I maintain that

oauth2→
A Ruby wrapper for the OAuth 2.0 protocol

Stars Version

oauth→
A Ruby wrapper for the OAuth 1.0 protocol

Stars Version

dynamoid→
Ruby ORM for Amazon's DynamoDB

Stars Version

flag_shih_tzu→
Bit Fields for Active Record, (originally by XING Developers)

Stars Version

Ruby: I built that

RSpec Plugin Gems

rspec-pending_for→
Mark specs pending or skipped for specific Ruby engine / version combinations, e.g.
pending_for(engine: "ruby", versions: "2.0.0", reason: "just because")

Stars Version

rspec-block_is_expected→
Simplify testing of blocks in RSpec via, e.g.
block_is_expected.to_not raise_error

Stars Version

rspec-stubbed_env→
Unobtrusively stub ENV keys and values during testing, e.g.
stub_env('LANG' => 'en_US.UTF-8')

Stars Version

ActiveRecord Plugin Gems

activerecord-transactionable→
Properly Implement ActiveRecord Transactions, e.g.

  Car.transaction_wrapper(outside_retriable_errors: ActivRecord::RecordNotFound, outside_num_retry_attempts: 3) do |is_retry|
    is_retry ? Car.find_by!(vin: vin) : Car.create!(vin: vin)
  end
  

Stars Version

anonymous_active_record→
Faux Anonymous ActiveRecord Classes for easily testing Concerns, e.g.
AnonymousActiveRecord.generate(columns: ['name']) { include HasBalloon }

Stars Version

activerecord-tablefree→
TableFree ActiveRecord w/ associations and nested attributes

Stars Version

Resque Plugin Gems

resque-unique_at_runtime→
A resque plugin that ensures that only one job for a given queue will be running on any worker at a given time

Stars Version

resque-unique_by_arity→
Magic hacks which allow integration of job multiple Resque plugins providing different types of job uniqueness

Stars Version

Benchmarking Gems

gem_bench→
Static Gemfile analysis

Stars Version

react-rails-benchmark_renderer→
Static Gemfile analysis

Stars Version

require_bench→
Benchmark Ruby's `require` for Debugging Glory

Stars Version

Other Gems

sanitize_email→
An Email Condom for your Ruby Server

Stars Version

silent_stream→
ActiveSupport Stream Silencing - Without ActiveSupport

Stars Version

celluloid-io-pg-listener→
LISTEN for NOTIFY events from PostgreSQL and Asynchronously Do Something with the payload.

Stars Version

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.

Stars Version

archivist-client→
Archive.org client

Stars Version

csv_pirate→
Engage in pillage and plunder of demarcated values

Stars Version

dry_views→
Enhance Rails' content_for system with defaults

Stars Version

destination_errors→
Provides errors to the Form Object Presenter Pattern

Stars Version

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

Stars Version

each_in_batches→
Performance Measured and Tuned Batch Processing of Records with Blocks in Rails

Stars Version

And many more…

Some things I’ve written have been deprecated, or retired.

Will be expanding this page soon, and write some articles about each project and how I use it.

Hero image by Peter Boling (me) using Inkscape, the free vector drawing tool