Skip to content

Andrew Kane Resources

Primary Documentation

  • Gem Patterns Article: https://ankane.org/gem-patterns
  • Kane's own documentation of patterns used across his gems
  • Covers configuration, Rails integration, error handling

Top Ruby Gems by Stars

Search & Data

Gem Stars Description Source
Searchkick 6.6k+ Intelligent search for Rails https://github.com/ankane/searchkick
Chartkick 6.4k+ Beautiful charts in Ruby https://github.com/ankane/chartkick
Groupdate 3.8k+ Group by day, week, month https://github.com/ankane/groupdate
Blazer 4.6k+ SQL dashboard for Rails https://github.com/ankane/blazer

Database & Migrations

Gem Stars Description Source
PgHero 8.2k+ PostgreSQL insights https://github.com/ankane/pghero
Strong Migrations 4.1k+ Safe migration checks https://github.com/ankane/strong_migrations
Dexter 1.8k+ Auto index advisor https://github.com/ankane/dexter
PgSync 1.5k+ Sync Postgres data https://github.com/ankane/pgsync

Security & Encryption

Gem Stars Description Source
Lockbox 1.5k+ Application-level encryption https://github.com/ankane/lockbox
Blind Index 1.0k+ Encrypted search https://github.com/ankane/blind_index
Secure Headers Contributed patterns Referenced in gems

Analytics & ML

Gem Stars Description Source
Ahoy 4.2k+ Analytics for Rails https://github.com/ankane/ahoy
Neighbor 1.1k+ Vector search for Rails https://github.com/ankane/neighbor
Rover 700+ DataFrames for Ruby https://github.com/ankane/rover
Tomoto 200+ Topic modeling https://github.com/ankane/tomoto-ruby

Utilities

Gem Stars Description Source
Pretender 2.0k+ Login as another user https://github.com/ankane/pretender
Authtrail 900+ Login activity tracking https://github.com/ankane/authtrail
Notable 200+ Track notable requests https://github.com/ankane/notable
Logstop 200+ Filter sensitive logs https://github.com/ankane/logstop

Key Source Files to Study

Entry Point Patterns

  • https://github.com/ankane/searchkick/blob/master/lib/searchkick.rb
  • https://github.com/ankane/pghero/blob/master/lib/pghero.rb
  • https://github.com/ankane/strong_migrations/blob/master/lib/strong_migrations.rb
  • https://github.com/ankane/lockbox/blob/master/lib/lockbox.rb

Class Macro Implementations

  • https://github.com/ankane/searchkick/blob/master/lib/searchkick/model.rb
  • https://github.com/ankane/lockbox/blob/master/lib/lockbox/model.rb
  • https://github.com/ankane/neighbor/blob/master/lib/neighbor/model.rb
  • https://github.com/ankane/blind_index/blob/master/lib/blind_index/model.rb

Rails Integration (Railtie/Engine)

  • https://github.com/ankane/pghero/blob/master/lib/pghero/engine.rb
  • https://github.com/ankane/searchkick/blob/master/lib/searchkick/railtie.rb
  • https://github.com/ankane/ahoy/blob/master/lib/ahoy/engine.rb
  • https://github.com/ankane/blazer/blob/master/lib/blazer/engine.rb

Database Adapters

  • https://github.com/ankane/strong_migrations/tree/master/lib/strong_migrations/adapters
  • https://github.com/ankane/groupdate/tree/master/lib/groupdate/adapters
  • https://github.com/ankane/neighbor/tree/master/lib/neighbor

Error Messages (Template Pattern)

  • https://github.com/ankane/strong_migrations/blob/master/lib/strong_migrations/error_messages.rb

Gemspec Examples

  • https://github.com/ankane/searchkick/blob/master/searchkick.gemspec
  • https://github.com/ankane/neighbor/blob/master/neighbor.gemspec
  • https://github.com/ankane/ahoy/blob/master/ahoy_matey.gemspec

Test Setups

  • https://github.com/ankane/searchkick/tree/master/test
  • https://github.com/ankane/lockbox/tree/master/test
  • https://github.com/ankane/strong_migrations/tree/master/test

GitHub Profile

  • Profile: https://github.com/ankane
  • All Ruby Repos: https://github.com/ankane?tab=repositories&q=&type=&language=ruby&sort=stargazers
  • RubyGems Profile: https://rubygems.org/profiles/ankane

Blog Posts & Articles

  • ankane.org: https://ankane.org/
  • Gem Patterns: https://ankane.org/gem-patterns (essential reading)
  • Postgres Performance: https://ankane.org/introducing-pghero
  • Search Tips: https://ankane.org/search-rails

Design Philosophy Summary

From studying 100+ gems, Kane's consistent principles:

  1. Zero dependencies when possible - Each dep is a maintenance burden
  2. ActiveSupport.on_load always - Never require Rails gems directly
  3. Class macro DSLs - Single method configures everything
  4. Explicit over magic - No method_missing, define methods directly
  5. Minitest only - Simple, sufficient, no RSpec
  6. Multi-version testing - Support broad Rails/Ruby versions
  7. Helpful errors - Template-based messages with fix suggestions
  8. Abstract adapters - Clean multi-database support
  9. Engine isolation - isolate_namespace for mountable gems
  10. Minimal documentation - Code is self-documenting, README is examples