gem serverをlaunchdで動かしておく

Rubyで、gem installした後、ざっとドキュメントを見たいとき、どうするのが良いでしょうか?
(→解決しました「gem serverを動かして、表示されたURLをブラウザで見る」らしいです)

Rubyで、gem installした後、ざっとドキュメントを見たいとき、どうするのが良いでしょうか?→gem serverで解決 - rubyco(るびこ)の日記

というエントリを見て、割と便利に使っているのですがあんまりみんなが使ってないのかもしれない方法があるのでご紹介。

launchdでサービスとして動かす

Macにはlaunchdというものがあります。おいらもman読んだぐらいしか知識がないので説明はうまくできません。大体Linuxで言うinitみたいなもんです。第1回 initを置き換えるlaunchd【前編】 (1/3) - ITmedia エンタープライズ第2回 initを置き換えるlaunchd【後編】 (1/3) - ITmedia エンタープライズという記事もありますので併せてご一読ください。
で、このlaunchdで予めgem serverをサービスとして動かしておくとちょくちょくgemに含まれているrdocを読む際には結構便利になります。

設定ファイルの置き場所

  • $HOME/Library/LaunchAgents
  • /Library/LaunchAgents
  • /Library/LaunchDaemons
  • /System/Library/LaunchAgents
  • /System/Library/LaunchDaemons

この辺りらしいです。

LaunchAgentsとLaunchDaemonsの違い

 launchdが起動するサービスは大きく分けて2つ、AgentとDaemonに分類される。
 Daemonはいわゆるデーモンであり、root権限での動作を前提としている。これはログインしているユーザーが誰であるか、そもそもログインしているユーザーがいるかといったこととは関係を持たないサービスを意味する。
 一方AgentはDaemonとは異なり、現在ログインしているユーザーごとに起動される各ユーザー向けのサービスを意味する。例えば「ことえり」やATOKのような入力プログラム、iCaliTunesのヘルパープログラムといったユーザーごとに実行されるバックエンドサービスを起動するのに使用できる。

第1回 initを置き換えるlaunchd【前編】 (2/3) - ITmedia エンタープライズ

という訳でとりあえず自分のところだけで動かしたいので $HOME/Library/LaunchAgents に置きましょう。

設定ファイル launchd.plist を書く

おいらが使っているのは以下。名前は org.rubygems.server.plist とか適当に名付けています。

<?xml version="1.0" encoding="UTF-8"?>                
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>                                                
  <key>Label</key>                                    
  <string>org.rubygems.server</string>                
  <key>OnDemand</key>                                 
  <false/>                                            
  <key>ProgramArguments</key>                         
  <array>                                             
    <string>/opt/local/bin/gem</string>               
    <string>server</string>                           
    <string>--daemon</string>                         
  </array>                                            
</dict>                                               
</plist>

launchctlで設定ファイルを読み込み起動する

上のplistをorg.rubygems.server.plistで保存した場合

launchctl load -w org.rubygems.server.plist
launchctl start org.rubygems.server
load
launchctl load [-w] launchd.plist

wオプションは強制読み込み

unload
launchctl unload [-w] launchd.plist

wオプションは強制的に無効に

start
launchctl start jobname

jobname = launchd.plistのLabel要素で指定したもの

stop
launchctl stop jobname

jobname = launchd.plistのLabel要素で指定したもの

ブラウザで表示してみる

start した状態で http://localhost:8808 を表示して表示を確認する。表示できれば成功。

[おまけ] Firefoxのスマートキーワードに検索ボックスを登録しておく

Firefoxのスマートキーワードを設定しておくと、rdoc表示がさらに素早く行えます。おいらは gems というキーワードで登録しています。
Let's Enjoy!