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
ubermajestix
April 24, 2014
Programming
0
45
Internal Gem Infrastructure: A Crash Course
A quick talk about building, releasing, and hosting your own gems.
ubermajestix
April 24, 2014
Tweet
Share
More Decks by ubermajestix
See All by ubermajestix
The State of Auth - Boulder Ruby Oct. 2011
ubermajestix
1
74
Other Decks in Programming
See All in Programming
Local Peer-to-Peer APIはどのように使われていくのか?
hal_spidernight
1
170
1から理解するWeb Push
dora1998
7
2k
Things You Thought You Didn’t Need To Care About That Have a Big Impact On Your Job
hollycummins
0
160
Design Foundational Data Engineering Observability
sucitw
3
210
複雑なフォームに立ち向かう Next.js の技術選定
macchiitaka
3
910
AIと私たちの学習の変化を考える - Claude Codeの学習モードを例に
azukiazusa1
11
4.7k
AndroidXR向けにアプリを作るには
kotambourine
0
140
スケールする組織の実現に向けた インナーソース育成術 - ISGT2025
teamlab
PRO
3
190
デザイナーが Androidエンジニアに 挑戦してみた
874wokiite
0
620
半自動E2Eで手っ取り早くリグレッションテストを効率化しよう
beryu
4
710
猫と暮らすネットワークカメラ生活🐈 ~Vision frameworkでペットを愛でよう~ / iOSDC Japan 2025
yutailang0119
0
140
テストコードはもう書かない:JetBrains AI Assistantに委ねる非同期処理のテスト自動設計・生成
makun
0
960
Featured
See All Featured
Optimizing for Happiness
mojombo
379
70k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
4 Signs Your Business is Dying
shpigford
184
22k
The Invisible Side of Design
smashingmag
301
51k
Documentation Writing (for coders)
carmenintech
74
5k
Faster Mobile Websites
deanohume
309
31k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
The Language of Interfaces
destraynor
162
25k
RailsConf 2023
tenderlove
30
1.2k
Agile that works and the tools we love
rasmusluckow
330
21k
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