MacのlaunchdでRedmineを自動起動

以前、passengerスタンドアローン版を使って自分のMacでRedmineを自動起動するようにしたのですが、rvmをアップデート(1.10.2)したら起動しなくなったでござる!調べた結果1.8.0〜1.10.2ではダメぽでした。

launchd では以下のコマンドを実行している。

/Users/nullpon/.rvm/bin/rvm use 1.8.7-p352@redmine -S passenger start -e production -p 3001

これをシェルで実行すると

Error: unknown action 'ruby'

と表示されて終了ふざけんな。Githubのrvmのコードみて直そうと思ったけど、よく分からん…。

というわけでplistの方を修正する。rvmコマンドによるruby環境の切り替えをせずに、直接 ~/.rvm/bin/ の下にあるrubyを使ってpassengerを起動する方針。

自分の環境ではruby-1.8.7-p352@redmineをRedmineの起動に使っている。その場合のrubyコマンドは

~/.rvm/bin/ruby-1.8.7-p352@redmine

またpassengerコマンドは

~/.rvm/gems/ruby-1.8.7-p352@redmine/bin/passenger

これらをplistにフルパスで指定しよう。~/Library/LaunchAgent/jp.paulownia.redmine.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>jp.paulownia.redmine</string>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
    <key>WorkingDirectory</key>
    <string>/Users/nullpon/Documents/redmine</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/nullpon/.rvm/bin/ruby-1.8.7-p352@redmine</string>
        <string>/Users/nullpon/.rvm/gems/ruby-1.8.7-p352@redmine/bin/passenger</string>
        <string>start</string>
        <string>-e</string>
        <string>production</string>
        <string>-p</string>
        <string>3001</string>
    </array>
    <key>StandardOutPath</key>
    <string>/dev/null</string>
    <key>StandardErrorPath</key>
    <string>/dev/null</string>
</dict>
</plist>

plistをloadしなおす

$ launchctl unload ~/Library/LaunchAgent/jp.paulownia.redmine.plist
$ launchctl load ~/Library/LaunchAgent/jp.paulownia.redmine.plist