Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Internal Gem Infrastructure: A Crash Course
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ubermajestix
April 24, 2014
Programming
48
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Internal Gem Infrastructure: A Crash Course
A quick talk about building, releasing, and hosting your own gems.
ubermajestix
April 24, 2014
More Decks by ubermajestix
See All by ubermajestix
The State of Auth - Boulder Ruby Oct. 2011
ubermajestix
1
80
Other Decks in Programming
See All in Programming
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
180
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
170
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
13k
Claspは野良GASの夢をみるか
takter00
0
200
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
11
4.3k
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
720
技術的負債解消で開発者の未来を開く- AIの力でコード刷新
kmd2kmd
0
110
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
160
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
Webフレームワークの ベンチマークについて
yusukebe
0
170
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
200
Performance Engineering for Everyone
elenatanasoiu
0
200
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
210
Information Architects: The Missing Link in Design Systems
soysaucechin
0
980
How to make the Groovebox
asonas
2
2.2k
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
Paper Plane (Part 1)
katiecoart
PRO
0
9.2k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
A designer walks into a library…
pauljervisheath
211
24k
Transcript
! internal gem infrastructure a crash course
sharing is caring
internal open source
separate concerns
isolation
an example
“Gets the job done right?”
“What does this even do?”
“I’ll make a gem!”
building releasing hosting
building a gem a crash course inside a crash course
how meta. har har.
build a new gem bundle gem ls-super_awesomeness
a fresh gem
namespacing # LivingSocial => LS # GitHub => GH #
YourCompany => YC module LS class GeminaboxClient end end LS::GeminaboxClient require “ls/geminabox_client”
a basic example
! semantic versioning see SemVer.org for the full spec 3.1.42
3.1.42 ! bug fix ! semantic versioning
3.1.42 new feature! ! semantic versioning
3.1.42 breaking change ! semantic versioning
if its stable it should be 1.0.0
let the world behold your awesomeness
releasing should be EASY
git tag -v 3.1.42 rake build gem inabox \ pkg/ls-super_awesomeness-3.1.42.gem
rake release
don’t accidentally open source your code
git tag -v 3.1.42 rake build gem inabox \ pkg/ls-super_awesomeness-3.1.42.gem
rake release
monkeypatch subclass bundler
None
the magic
in your Rakefile delete bundler/gem_tasks
gem servers
geminabox stickler gemfury
host your own server (behind the firewall)
geminabox provides: - authentication[1] - pull through mirroring - `gem
inabox` command [1] via custom middleware
stickler provides: - authentication[1] - selective mirroring - command line
client - bundler api[2] [1] via custom middleware [2] coming soon
hosted server (not behind the firewall)
gemfury.com provides: - authentication - mirroring - command line client
- nodejs and python support
tyler montgomery @ubermajestix
photo credits https://www.flickr.com/photos/keitaro/39838227 https://www.flickr.com/photos/arthur-caranta/4048968087 https://www.flickr.com/photos/kalavinka/4617897952 https://www.flickr.com/photos/mellertime/1425023577 http://www.otj.com/Portfolio/Project-details/id/36.aspx