Luke Melia

software dev

October 9, 2007

My Rails project workspace script

When I’m ready to start a session working on Tracks on my MacBook, I open up iTerm, and type:

Last login: Tue Oct  9 02:44:39 on ttyp6
Welcome to Darwin!
LukeBlackBook:~ lmelia$ cd devprojects/tracks/
LukeBlackBook:~/devprojects/tracks lmelia$ workspace 

And then, the following happens:

  • A new iTerm session opens, with four tabs:
    • A tab running script/server
    • A tab running script/console
    • A tab running autotest
    • A tab with a prompt in the project directory
  • A new TextMate window opens with the project tree in it’s drawer.
  • A new Firefox tab opens with the http://0.0.0.0:3000/

The magic is enabled by this combination of shell and applescript:

#!/bin/sh

if [[ $# == 0 ]]; then
  PROJECT_DIR=$PWD
elif [[ $# == 1 && -d "$1" ]]; then
  PROJECT_DIR="$@"
else
  print "usage: workspace.sh 1"
  return 1
fi
PROJECT_NAME=`basename $PROJECT_DIR`
    
osascript <<-eof
  tell application "iTerm"

    make new terminal

    tell the last terminal

      activate current session

      launch session "Default Session"

      tell the last session
          set name to "$PROJECT_NAME"
          write text "cd \"$PROJECT_DIR\""
          write text "clear; ls"
      end tell

      launch session "Default Session"
      tell the last session
          set name to "server"
          write text "cd \"$PROJECT_DIR\""
          write text "./script/server"
      end tell

      launch session "Default Session"
      tell the last session
          set name to "console"
          write text "cd \"$PROJECT_DIR\""
          write text "./script/console"
      end tell

      launch session "Default Session"
      tell the last session
        set name to "autotest"
        write text "cd \"$PROJECT_DIR\""
        write text "autotest"
      end tell

    end tell
  end tell
eof
open http://0.0.0.0:3000/
mate $PROJECT_DIR

Props to Rob Orsini for the inspiration for this. My version has just minor tweaks from his original.

One Response to “My Rails project workspace script”

  1. Scott Bellware chimed in:

    Yay! Thanks Luke.

Leave a Reply

LukeMelia.com created 1999. ··· Luke Melia created 1976. ··· Live With Passion!