I’ve been doing tonnes of rails coding lately and absolutely loving it! I noticed that my work flow wasn’t all that DRY though; Every time I start working on an app I open up the same stuff:
- The app as a project in Textmate (mate .)
- The app server (script/server)
- The app console (script/console)
- A blank terminal (sc… wait.. no)
- Firefox (http://localhost:3000/)
So I wrote a quicksilver action that does it all for me!
#!/usr/bin/env ruby
require "rubygems"
require "appscript"
include Appscript
# Grab the project location from the command line / quicksilver
project = ARGV[0]
# Initialize variables
term = app("Terminal")
ff = app("Firefox")
threads = []
# Activate terminal and firefox
# This will open a new window if the app was not already
# open, which can result in one too many windows
term1 = term.activate
# So we'll close the first window if there is one
term.windows[0].close unless term.windows.get.to_s == ""
# Open up a terminal window at the project.
# Then open the project in textmate from
# the terminal, all in it's own thread
threads << Thread.new do
term3 = term.do_script("cd " + project)
term.do_script("mate .", :in => term3)
end
threads << Thread.new do
term1 = term.do_script("cd " + project)
term.do_script("script/server", :in => term1)
end
threads << Thread.new do
term2 = term.do_script("cd " + project)
term.do_script("script/console", :in => term2)
end
threads << Thread.new do
ff.OpenURL("http://localhost:3000")
end
# Join all of the threads to the main one
# This stops the script exiting before all
# threads have finished
threads.each do |thread|
thread.join
end
To Install:
- Install the appscript gem with “gem install rb-appscript”
- Copy script to “~/Library/Application Support/Quicksilver/Actions/Open Rails Project.rb” (you’ll need to create the file)
- Restart quicksilver
To Use:
- Use Quicksilver to navigate to your project folder
- Select “Open Rails Project” as the action.
Enjoy!