Skip to content

Ruby gems — one organisation each

A Ruby virtual machine is only useful with a library around it, so each gem the ecosystem needs is reimplemented in pure Go in its own go-ruby-* organisation: the standard library, Rails and its dependencies, the testing stack, the Puppet stack, database drivers, serialisation formats and template engines.

Every one of them is byte-compared against MRI where a byte comparison is meaningful — a checksum, a Marshal payload, a formatted number. Where it is not (a deflate stream, say, whose output is implementation-defined) the requirement is interoperability in both directions instead.

Two things to know before reaching for one:

  • The gem organisation is the Ruby-facing wrapper, not always the engine. Some are thin shells over an engine that lives in its own non-Ruby organisation — the regexp gem wraps go-regexp/engine, the sass gem wraps go-scss/scss. If you are writing Go rather than Ruby, take the engine.
  • The repository inside is named after the gem, not after the organisation: go-ruby-activerecord/activerecord.
Gem Organisation
aasm go-ruby-aasm
abbrev go-ruby-abbrev
acme go-ruby-acme
actioncable go-ruby-actioncable
actionmailer go-ruby-actionmailer
actionpack go-ruby-actionpack
actionview go-ruby-actionview
activejob go-ruby-activejob
activeldap go-ruby-activeldap
activemodel go-ruby-activemodel
activerecord go-ruby-activerecord
activestorage go-ruby-activestorage
activesupport go-ruby-activesupport
addressable go-ruby-addressable
age go-ruby-age
arrow go-ruby-arrow
async go-ruby-async
augeas go-ruby-augeas
base64 go-ruby-base64
bbolt go-ruby-bbolt
bcrypt go-ruby-bcrypt
benchmark go-ruby-benchmark
bigdecimal go-ruby-bigdecimal
bleve go-ruby-bleve
builder go-ruby-builder
bundler go-ruby-bundler
cancancan go-ruby-cancancan
capistrano go-ruby-capistrano
capybara go-ruby-capybara
cgi go-ruby-cgi
chronic go-ruby-chronic
cmath go-ruby-cmath
commonmark go-ruby-commonmark
complex go-ruby-complex
concurrent-ruby go-ruby-concurrent-ruby
confd go-ruby-confd
connection-pool go-ruby-connection-pool
csv go-ruby-csv
date go-ruby-date
deep-merge go-ruby-deep-merge
devise go-ruby-devise
did-you-mean go-ruby-did-you-mean
digest go-ruby-digest
dotenv go-ruby-dotenv
dry-struct go-ruby-dry-struct
dry-types go-ruby-dry-types
dry-validation go-ruby-dry-validation
erasure go-ruby-erasure
erb go-ruby-erb
erubi go-ruby-erubi
etcd go-ruby-etcd
excon go-ruby-excon
facter go-ruby-facter
factory-bot go-ruby-factory-bot
faker go-ruby-faker
faraday go-ruby-faraday
fast-gettext go-ruby-fast-gettext
fast-gettext-locale go-ruby-fast-gettext-locale
find go-ruby-find
format go-ruby-format
friendly-id go-ruby-friendly-id
fsctl go-ruby-fsctl
getoptlong go-ruby-getoptlong
grape go-ruby-grape
graphql go-ruby-graphql
grpc go-ruby-grpc
haml go-ruby-haml
hanami go-ruby-hanami
hcl2 go-ruby-hcl2
hiera go-ruby-hiera
hiera-eyaml go-ruby-hiera-eyaml
hocon go-ruby-hocon
http go-ruby-http
httparty go-ruby-httparty
i18n go-ruby-i18n
images go-ruby-images
ipaddr go-ruby-ipaddr
irb go-ruby-irb
jbuilder go-ruby-jbuilder
jekyll go-ruby-jekyll
json go-ruby-json
jwt go-ruby-jwt
kafka go-ruby-kafka
kaminari go-ruby-kaminari
kramdown go-ruby-kramdown
ldap go-ruby-ldap
liquid go-ruby-liquid
logger go-ruby-logger
mail go-ruby-mail
marshal go-ruby-marshal
matrix go-ruby-matrix
mime-types go-ruby-mime-types
minitest go-ruby-minitest
money go-ruby-money
mongodb go-ruby-mongodb
msgpack go-ruby-msgpack
multi-json go-ruby-multi-json
mustache go-ruby-mustache
mysql go-ruby-mysql
nats go-ruby-nats
net-ftp go-ruby-net-ftp
net-http go-ruby-net-http
net-imap go-ruby-net-imap
net-pop go-ruby-net-pop
net-s3 go-ruby-net-s3
net-sftp go-ruby-net-sftp
net-smtp go-ruby-net-smtp
nokogiri go-ruby-nokogiri
oauth2 go-ruby-oauth2
observer go-ruby-observer
oidc go-ruby-oidc
omniauth go-ruby-omniauth
openbao go-ruby-openbao
openssl go-ruby-openssl
openstack go-ruby-openstack
opentelemetry go-ruby-opentelemetry
opentype go-ruby-opentype
optparse go-ruby-optparse
ostruct go-ruby-ostruct
pagy go-ruby-pagy
paper-trail go-ruby-paper-trail
parquet go-ruby-parquet
parser go-ruby-parser
pathname go-ruby-pathname
pg go-ruby-pg
prawn go-ruby-prawn
prettyprint go-ruby-prettyprint
prime go-ruby-prime
protobuf go-ruby-protobuf
pstore go-ruby-pstore
public-suffix go-ruby-public-suffix
puma go-ruby-puma
pundit go-ruby-pundit
puppet go-ruby-puppet
puppet-resource-api go-ruby-puppet-resource-api
racc go-ruby-racc
rack go-ruby-rack
rails go-ruby-rails
railties go-ruby-railties
rake go-ruby-rake
ransack go-ruby-ransack
rational go-ruby-rational
rdoc go-ruby-rdoc
reddit go-ruby-reddit
redis go-ruby-redis
regexp go-ruby-regexp
reline go-ruby-reline
resolv go-ruby-resolv
resque go-ruby-resque
rexml go-ruby-rexml
roda go-ruby-roda
rolify go-ruby-rolify
rouge go-ruby-rouge
rqrcode go-ruby-rqrcode
rspec go-ruby-rspec
rss go-ruby-rss
rubocop go-ruby-rubocop
rubygems go-ruby-rubygems
saml go-ruby-saml
sass go-ruby-sass
scanf go-ruby-scanf
securerandom go-ruby-securerandom
semantic-puppet go-ruby-semantic-puppet
sequel go-ruby-sequel
set go-ruby-set
shellwords go-ruby-shellwords
shrine go-ruby-shrine
sidekiq go-ruby-sidekiq
simplecov go-ruby-simplecov
sinatra go-ruby-sinatra
slim go-ruby-slim
sodium go-ruby-sodium
sqlite3 go-ruby-sqlite3
stdlib go-ruby-stdlib
stringio go-ruby-stringio
strscan go-ruby-strscan
syslog go-ruby-syslog
thor go-ruby-thor
time go-ruby-time
timecop go-ruby-timecop
toml go-ruby-toml
tsort go-ruby-tsort
typhoeus go-ruby-typhoeus
tzinfo go-ruby-tzinfo
unicode-normalize go-ruby-unicode-normalize
uri go-ruby-uri
vcr go-ruby-vcr
warden go-ruby-warden
webauthn go-ruby-webauthn
webmock go-ruby-webmock
webrick go-ruby-webrick
xslt go-ruby-xslt
yaml go-ruby-yaml
zeitwerk go-ruby-zeitwerk
zlib go-ruby-zlib

195 gem organisations, 195 public code repositories.