Launchd Gem Servers on OS X
Usually when I need documentation for a RubyGem I'm working with, I go to RubyDoc.info. Today, however, it was not responding. After catching up on Twitter it occurred to me that I could read the documentation locally since I already had the gem installed.
Running gem rdoc prawn
1 generates documentation for the prawn gem.
Then gem server
will start a server on localhost:8808
hosting the generated RDoc.
This worked fine, but it occurred to me that starting and stopping the gem server whenever I want to see the documentation is annoying. OS X has the concept of launch agents which can be kept alive by the operating system whenever you are logged in. I thought I would make a launch agent to run a gem server so that I could open it whenever I wanted.
Unfortunately, running gem server
in a default shell uses the version of Ruby that ships with OS X.
I have gems installed in different versions of Ruby using chruby, and I might want to see any of them depending on what project I'm working on.
So I decided to run a server for each version of Ruby I have installed (except the system Ruby).
Each server runs on a different port chosen based on the Ruby version it supports.
Ruby 2.0.0 is available at localhost:8200
, 2.1.4 is available at localhost:8214
, and 2.2.1 is at localhost:8221
.
I wrote a script and an accompanying launch agent plist to run it and posted them in a gist.
- There was one catch to generating the documentation. I keep my
~/.gemrc
withgem: --no-ri --no-rdoc
so that bundle installs go quickly, but in this case it was causing thegem rdoc
command to fail. I had to remove that option to successfully generate the documentation.↩