<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en-US">
  <title>Brian T. Cooke - Home</title>
  <id>tag:blog.briantcooke.com,2009:mephisto/</id>
  <generator uri="http://mephistoblog.com" version="0.7.3">Mephisto Noh-Varr</generator>
  
  <link href="http://blog.briantcooke.com/" rel="alternate" type="text/html" />
  <updated>2008-04-15T13:20:09Z</updated>
  <link rel="self" href="http://feeds.feedburner.com/briantcooke" type="application/atom+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry xml:base="http://blog.briantcooke.com/">
    <author>
      <name>BrianC</name>
    </author>
    <id>tag:blog.briantcooke.com,2008-04-15:6368</id>
    <published>2008-04-15T13:20:09Z</published>
    <updated>2008-04-15T13:20:09Z</updated>
    <category term="code" />
    <category term="ruby" />
    <link href="http://feedproxy.google.com/~r/briantcooke/~3/L1DObR1f_hY/gems-for-tick-and-harvest-apis" rel="alternate" type="text/html" />
    <title>Gems for Tick and Harvest APIs</title>
<content type="html">
            &lt;p&gt;&lt;a href="http://simplyinvoices.com"&gt;Simply Invoices&lt;/a&gt; now supports fetching your time data from &lt;a href="http://tickspot.com"&gt;Tick&lt;/a&gt; and &lt;a href="http://getharvest.com"&gt;Harvest&lt;/a&gt;. As previously mentioned I made a gem for Tick and now I’ve also made one for Harvest.&lt;/p&gt;

&lt;p&gt;Installation&lt;/p&gt;

&lt;p&gt;
&lt;code&gt;
gem install tickspot-ruby&lt;br /&gt;
gem install harvest-ruby
&lt;/code&gt;
&lt;/p&gt;

&lt;p&gt;The gems do not cover either of the APIs 100%. I implemented what I needed. If you need more, hack away! &lt;/p&gt;

&lt;p&gt;Sources at github: &lt;a href="http://github.com/bricooke/tickspot-ruby"&gt;Tick Ruby Gem&lt;/a&gt; and &lt;a href="http://github.com/bricooke/harvest-ruby"&gt;Harvest Ruby Gem&lt;/a&gt;.&lt;/p&gt;
          </content>  <feedburner:origLink>http://blog.briantcooke.com/2008/4/15/gems-for-tick-and-harvest-apis</feedburner:origLink></entry>
  <entry xml:base="http://blog.briantcooke.com/">
    <author>
      <name>BrianC</name>
    </author>
    <id>tag:blog.briantcooke.com,2008-04-12:6355</id>
    <published>2008-04-12T07:38:52Z</published>
    <updated>2008-04-14T18:40:53Z</updated>
    <category term="announcements" />
    <category term="code" />
    <category term="ruby" />
    <link href="http://feedproxy.google.com/~r/briantcooke/~3/SFwCiegCU7g/tickspot-ruby-wrapper" rel="alternate" type="text/html" />
    <title>Tickspot API Ruby Wrapper</title>
<content type="html">
            &lt;p&gt;I’m investigating adding support for creating invoices from time logged in &lt;a href="http://tickspot.com"&gt;Tickspot&lt;/a&gt; to &lt;a href="http://simplyinvoices.com"&gt;Simply Invoices&lt;/a&gt;. The first step of that is to write a ruby wrapper for their API. I’ve created a github project for that and am making it publicly available. You can find it at &lt;a href="http://github.com/bricooke/tickspot-ruby"&gt;http://github.com/bricooke/tickspot-ruby&lt;/a&gt;. Hopefully someone finds it useful. Or even better, makes it more useful :)&lt;/p&gt;

&lt;p&gt;To make it more accessible, it should probably be a gem :/ Baby steps.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Update 4/14/2008:&lt;/b&gt; It’s now a published gem. gem install tickspot-ruby&lt;/p&gt;
          </content>  <feedburner:origLink>http://blog.briantcooke.com/2008/4/12/tickspot-ruby-wrapper</feedburner:origLink></entry>
  <entry xml:base="http://blog.briantcooke.com/">
    <author>
      <name>BrianC</name>
    </author>
    <id>tag:blog.briantcooke.com,2008-04-09:6350</id>
    <published>2008-04-09T12:47:19Z</published>
    <updated>2008-10-09T17:50:08Z</updated>
    <category term="code" />
    <category term="ruby" />
    <link href="http://feedproxy.google.com/~r/briantcooke/~3/1aC7OLdDvnM/rake-task-to-remove-all-deleted-files-from-git" rel="alternate" type="text/html" />
    <title>Rake task to remove all deleted files from git</title>
<content type="html">
            &lt;p&gt;&lt;b&gt;Update&lt;/b&gt;: See comment below from David Phillips: &lt;code&gt;git add -u&lt;/code&gt; is all I needed. Thanks David.&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;After shuffling some code around I found myself with a lot of files to remove from git. Instead of doing it by hand or trying to ensure a subdirectory is gone and use -r, I wrote this rake task:&lt;/p&gt;

&lt;div&gt;namespace &lt;span&gt;:git&lt;/span&gt; &lt;span&gt;do&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;desc &lt;span&gt;&amp;quot;Remove removed files&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;task &lt;span&gt;:remove&lt;/span&gt; &lt;span&gt;do&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span&gt;system&lt;/span&gt;(&lt;span&gt;&amp;quot;for i in $(git status | grep deleted | awk ‘{print $3}’); do git rm $i; done&amp;quot;&lt;/span&gt;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;span&gt;end&lt;/span&gt;&lt;br /&gt;
&lt;span&gt;end&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;

&lt;p&gt;If you use sake, this task is available on pastie @ &lt;a href="http://pastie.caboo.se/177861.txt"&gt;sake -T http://pastie.caboo.se/177861.txt&lt;/a&gt;&lt;/p&gt;
          </content>  <feedburner:origLink>http://blog.briantcooke.com/2008/4/9/rake-task-to-remove-all-deleted-files-from-git</feedburner:origLink></entry>
  <entry xml:base="http://blog.briantcooke.com/">
    <author>
      <name>BrianC</name>
    </author>
    <id>tag:blog.briantcooke.com,2008-02-28:6244</id>
    <published>2008-02-28T13:50:36Z</published>
    <updated>2008-02-28T13:56:13Z</updated>
    <category term="tips" />
    <link href="http://feedproxy.google.com/~r/briantcooke/~3/RnXaYSr7NHg/git-stash-apply-syntax" rel="alternate" type="text/html" />
    <title>git stash apply syntax</title>
<content type="html">
            &lt;p&gt;It took me a few tries to figure out how ‘git stash apply’ can apply a specific stash. The trick is you have to use the stash{@X} as listed in git stash list, not the string you gave it.&lt;/p&gt;

&lt;p&gt;So if git stash list has&lt;/p&gt;

&lt;p&gt;&lt;code&gt;
bcooke@cc $ git stash list&lt;br /&gt;
stash@{0}: On local-trunk: names changed to protect w/ correct files&lt;br /&gt;
stash@{1}: On local-trunk: the innocent&lt;br /&gt;
stash@{2}: On local-trunk: background that thing&lt;br /&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To apply the stash named “background that thing” I just have to run&lt;/p&gt;

&lt;p&gt;&lt;code&gt;
git stash apply stash@{2}
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;and all is well.&lt;/p&gt;
          </content>  <feedburner:origLink>http://blog.briantcooke.com/2008/2/28/git-stash-apply-syntax</feedburner:origLink></entry>
  <entry xml:base="http://blog.briantcooke.com/">
    <author>
      <name>BrianC</name>
    </author>
    <id>tag:blog.briantcooke.com,2008-01-12:6123</id>
    <published>2008-01-12T03:16:29Z</published>
    <updated>2008-01-13T00:43:24Z</updated>
    <category term="code" />
    <category term="rails" />
    <category term="tips" />
    <link href="http://feedproxy.google.com/~r/briantcooke/~3/7TjXBnCitiQ/aliasing-http-localhost" rel="alternate" type="text/html" />
    <title>Aliasing http://localhost</title>
<content type="html">
            &lt;p&gt;When working on multiple rails apps I’ve been annoyed that the URL field in the browser gets cluttered during autocomplete. My autocomplete for http://localhost:3000/ will have paths for each app I’ve worked on recently. Since the browser just sees them all as http://localhost:3000 it returs all the matches. Same problem for form auto-complete and &lt;a href="http://1password.com"&gt;1password&lt;/a&gt; auto-complete. &lt;/p&gt;

&lt;p&gt;There’s an easy way around this.&lt;/p&gt;

&lt;h3&gt;on a Mac or other *nix&lt;/h3&gt;

&lt;p&gt;Edit /etc/hosts and add one line per project. Here’s my /etc/hosts:&lt;/p&gt;

&lt;pre&gt;
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
127.0.0.1 cc
127.0.0.1 mlk
127.0.0.1 si

255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0     localhost
&lt;/pre&gt;

&lt;p&gt;cc, si and mlk are abbreviations for sites I’m currently working on. With this in place I continue to start rails as ./script/server and it listens on localhost port 3000. But now when I’m working on ‘cc’ I point my browser at http://cc:3000. This makes it such that all autocompletes are now only for the ‘cc’ app. I find it a great benefit for such little effort.&lt;/p&gt;

&lt;h3&gt;Windows&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Updated 1/12/07&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.potionfactory.com/blog/"&gt;Andy Kim&lt;/a&gt; commented that the windows hosts file is at C:\WINDOWS\System32\Drivers\etc\hosts&lt;/p&gt;
          </content>  <feedburner:origLink>http://blog.briantcooke.com/2008/1/12/aliasing-http-localhost</feedburner:origLink></entry>
  <entry xml:base="http://blog.briantcooke.com/">
    <author>
      <name>BrianC</name>
    </author>
    <id>tag:blog.briantcooke.com,2007-10-10:5667</id>
    <published>2007-10-10T13:19:16Z</published>
    <updated>2007-10-10T13:19:16Z</updated>
    <category term="code" />
    <category term="rails" />
    <link href="http://feedproxy.google.com/~r/briantcooke/~3/LeUYCne2V18/continually-burnt-by-reply_to" rel="alternate" type="text/html" />
    <title>Continually burnt by @reply_to</title>
<content type="html">
            &lt;p&gt;This has bitten me a number of times. When sending mail through ActionMailer/rails, @reply_to is not a valid way to set the reply to address. You must&lt;/p&gt;

&lt;p&gt;&lt;code&gt;
@headers["reply-to"] = reply_address
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This just came up in a project where there was existing code that had @reply&lt;em&gt;to = reply&lt;/em&gt;address. Until today, no one really cared that the reply-to field wasn’t being set since it was always just the sender. Then today I happily come along and changed it to something other than the sender. Took me too long to figure this out.&lt;/p&gt;
          </content>  <feedburner:origLink>http://blog.briantcooke.com/2007/10/10/continually-burnt-by-reply_to</feedburner:origLink></entry>
  <entry xml:base="http://blog.briantcooke.com/">
    <author>
      <name>BrianC</name>
    </author>
    <id>tag:blog.briantcooke.com,2007-07-23:3980</id>
    <published>2007-07-23T19:12:31Z</published>
    <updated>2007-07-23T19:12:45Z</updated>
    <category term="announcements" />
    <link href="http://feedproxy.google.com/~r/briantcooke/~3/miCxvznpxM8/simply-invoices-launched" rel="alternate" type="text/html" />
    <title>Simply Invoices Launched</title>
<content type="html">
            &lt;p&gt;I’m happy to announce that &lt;a href="http://simplyinvoices.com"&gt;Simply Invoices&lt;/a&gt; is now open to everyone. &lt;a href="http://simplyinvoices.com"&gt;Have at it&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Check out the &lt;a href="http://blog.simplyinvoices.com"&gt;Simply Invoices blog&lt;/a&gt; for more info.&lt;/p&gt;
          </content>  <feedburner:origLink>http://blog.briantcooke.com/2007/7/23/simply-invoices-launched</feedburner:origLink></entry>
  <entry xml:base="http://blog.briantcooke.com/">
    <author>
      <name>BrianC</name>
    </author>
    <id>tag:blog.briantcooke.com,2007-07-17:3780</id>
    <published>2007-07-17T04:13:56Z</published>
    <updated>2007-07-17T04:15:00Z</updated>
    <category term="announcements" />
    <link href="http://feedproxy.google.com/~r/briantcooke/~3/o12V0bC8nwI/simply-invoices-private-beta-launches" rel="alternate" type="text/html" />
    <title>Simply Invoices Private Beta Launches</title>
<content type="html">
            &lt;p&gt;Today I started the semi-private beta for &lt;a href="http://blog.simplyinvoices.com"&gt;Simply Invoices&lt;/a&gt;. I’ve emailed every one that has subscribed to the mailing list with the details of the beta. &lt;/p&gt;

&lt;p&gt;If you’re tracking your billable time in Basecamp, and would like to try Simply Invoices, shoot me an email at &lt;a href="mailto:me@briantcooke.com"&gt;me@briantcooke.com&lt;/a&gt; and just mention that you’d like to join the beta.&lt;/p&gt;

&lt;p&gt;The plan is to launch the public release next Tuesday. There are still a few things to tie up, but from what I can tell I’m on track for that date.&lt;/p&gt;
          </content>  <feedburner:origLink>http://blog.briantcooke.com/2007/7/17/simply-invoices-private-beta-launches</feedburner:origLink></entry>
  <entry xml:base="http://blog.briantcooke.com/">
    <author>
      <name>BrianC</name>
    </author>
    <id>tag:blog.briantcooke.com,2007-06-27:3178</id>
    <published>2007-06-27T13:44:00Z</published>
    <updated>2007-06-27T13:46:31Z</updated>
    <category term="announcements" />
    <category term="code" />
    <category term="rails" />
    <link href="http://feedproxy.google.com/~r/briantcooke/~3/4tNmdzeAamU/mybizexpenses-source-opened" rel="alternate" type="text/html" />
    <title>mybizexpenses Source Opened</title>
<content type="html">
            &lt;p&gt;Earlier this week, someone asked if the source for &lt;a href="http://mybizexpenses.com"&gt;mybizexpenses.com&lt;/a&gt; was available. At the time, it wasn’t. I’m now happy to say that it is.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Why?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I’m hopeful that this will make mybizexpenses more attractive to people who don’t want to host their expense info on the web. Those folks can now download the source and run it locally on their machine or on a private server of their choosing.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Where?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;svn is at: svn://svn.roundhaus.com/roobasoft/mybizexpenses&lt;/p&gt;

&lt;p&gt;You can browse the code at: &lt;a href="https://roobasoft.roundhaus.com/projects/223-mybizexpenses"&gt;https://roobasoft.roundhaus.com/projects/223-mybizexpenses&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Is the hosted version going away?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Nope. That’s where my data is, so I have no plans to get rid of it. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Can I import the data I have stored from the hosted version?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Right now I have no export/import feature. If you want it, ask. Even better, write the code, submit a patch, and then ask me to deploy it ;)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What’s the license?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;MIT. See the LICENSE file in the project dir.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note about hosting&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I’m hosting the mybizexpenses sources on &lt;a href="http://www.roundhaus.com"&gt;RoundHaus&lt;/a&gt; and am loving it. &lt;a href="http://daikini.com"&gt;Jonathan Younger&lt;/a&gt;, the roundhaus developer, presented RoundHaus at a &lt;a href="http://boiserb.com"&gt;Boise Ruby Brigade&lt;/a&gt; meetup a couple months ago. At that time I got access to the beta and currently have five projects stored in RoundHaus, including the soon to be released &lt;a href="http://www.simplyinvoices.com"&gt;Simply Invoices&lt;/a&gt;. Only the mybizexpenses project has annonymous access turned on.&lt;/p&gt;

&lt;p&gt;RoundHaus is currently in a private beta. I’ll do a proper post on RoundHaus when it’s publicly available, but here are some things get out of it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;continuous integration (works with rspec) &lt;/li&gt;
&lt;li&gt;nice visualization of code coverage (both at the whole project level and per file)&lt;/li&gt;
&lt;li&gt;ability to run tests against MySQL, SQLite3 or Postgres&lt;/li&gt;
&lt;li&gt;a gorgeous code browser&lt;/li&gt;
&lt;li&gt;equally gorgeous diffs&lt;/li&gt;
&lt;li&gt;super easy svn management (no more svnadmin command for me)&lt;/li&gt;
&lt;li&gt;Twitter notifications for my build status (add in &lt;a href="http://iconfactory.com/software/twitterrific/"&gt;twitterrific&lt;/a&gt; and you’ve got an awesome build notification system)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most of the above features can be seen via the public website. Give it a look an be sure to sign up for the notification when RoundHaus is publicly available (I hear it’ll be &lt;em&gt;soon&lt;/em&gt;).&lt;/p&gt;
          </content>  <feedburner:origLink>http://blog.briantcooke.com/2007/6/27/mybizexpenses-source-opened</feedburner:origLink></entry>
  <entry xml:base="http://blog.briantcooke.com/">
    <author>
      <name>BrianC</name>
    </author>
    <id>tag:blog.briantcooke.com,2007-06-07:2701</id>
    <published>2007-06-07T04:35:27Z</published>
    <updated>2007-06-07T04:35:27Z</updated>
    <category term="code" />
    <category term="rails" />
    <category term="ruby" />
    <category term="tips" />
    <link href="http://feedproxy.google.com/~r/briantcooke/~3/sYyglaqy-0s/mybizexpenses-mentioned-on-the-rails-way" rel="alternate" type="text/html" />
    <title>mybizexpenses mentioned on The Rails Way</title>
<content type="html">
            &lt;p&gt;&lt;a href="http://mybizexpenses.com"&gt;mybizexpenses.com&lt;/a&gt; is mentioned in the latest &lt;a href="http://www.therailsway.com/2007/6/7/railsconf-recap-named-callbacks"&gt;entry&lt;/a&gt; of the always educational, “&lt;a href="http://therailsway.com"&gt;The Rails Way&lt;/a&gt;”. Jamis points out how I should be using named callbacks and a simple way to make a confusing function, well, not confusing.&lt;/p&gt;

&lt;p&gt;The article is pretty short, but very handy. I didn’t know named callbacks existed.&lt;/p&gt;

&lt;p&gt;I really love how much a lot of the high profile rails folks give back to the community via things like this.&lt;/p&gt;
          </content>  <feedburner:origLink>http://blog.briantcooke.com/2007/6/7/mybizexpenses-mentioned-on-the-rails-way</feedburner:origLink></entry>
  <entry xml:base="http://blog.briantcooke.com/">
    <author>
      <name>BrianC</name>
    </author>
    <id>tag:blog.briantcooke.com,2007-05-22:2380</id>
    <published>2007-05-22T05:55:11Z</published>
    <updated>2007-05-22T08:28:22Z</updated>
    <category term="announcements" />
    <category term="gigs" />
    <category term="rails" />
    <link href="http://feedproxy.google.com/~r/briantcooke/~3/g8tze66dLi8/simply-invoices-pre-announcement" rel="alternate" type="text/html" />
    <title>Simply Invoices Pre-Announcement</title>
<content type="html">
            &lt;div&gt;&lt;a href="http://simplyinvoices.com"&gt;&lt;img src="http://simplyinvoices.com/images/simply_invoices_logo.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;small&gt;Icon by &lt;a href="http://erikagreco.com"&gt;Erika Greco&lt;/a&gt;&lt;/small&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="http://simplyinvoices.com"&gt;Simply Invoices&lt;/a&gt; is a project I’ve been working on for about a month. The idea is to create a site where you enter in your &lt;a href="http://basecamphq.com/?referrer=roobasoft"&gt;basecamp&lt;/a&gt; info, select a project and a person and create invoices from the time logged for that person within a given time range. Since I track all my billable time in &lt;a href="http://basecamphq.com/?referrer=roobasoft"&gt;basecamp&lt;/a&gt;, this is something I really wanted.&lt;/p&gt;

&lt;p&gt;I’m shooting for a mid-June beta and an early July launch. If you use basecamp to log your billable time, please sign up for the announcement mailing list. The first bunch of folks that sign up will be given access to the beta. There’ll also be discounted pricing for the first month after the site goes live to the public (and that discounted rate will be for the lifetime of your account, not just the 1st month).&lt;/p&gt;

&lt;p&gt;I know there are a lot of different time tracking apps out there. Please let me know how you’re tracking your time (either in the comments, or &lt;a href="mailto:me@briantcooke.com?subject=Simply%20Invoices"&gt;email&lt;/a&gt;. I’d like to support as many inputs as makes sense.&lt;/p&gt;
          </content>  <feedburner:origLink>http://blog.briantcooke.com/2007/5/22/simply-invoices-pre-announcement</feedburner:origLink></entry>
  <entry xml:base="http://blog.briantcooke.com/">
    <author>
      <name>BrianC</name>
    </author>
    <id>tag:blog.briantcooke.com,2007-05-17:2290</id>
    <published>2007-05-17T11:00:26Z</published>
    <updated>2007-05-17T17:22:48Z</updated>
    <category term="rails" />
    <category term="ruby" />
    <category term="tips" />
    <link href="http://feedproxy.google.com/~r/briantcooke/~3/2L0Z2QnwT-A/my-railswork-automator-script" rel="alternate" type="text/html" />
    <title>My 'RailsWork' Automator Script</title>
<content type="html">
            &lt;p&gt;I have an automator workflow that I’ve been using that others might find useful. It’s heavily based off of the &lt;a href="http://www.web20show.com"&gt;web20show&lt;/a&gt;’s own script (original &lt;a href="http://steelpixel.stikipad.com/support/show/Automator+Script+for+Rails+Development"&gt;here&lt;/a&gt;). The biggest difference (if I remember right) is my flow takes the project directory as an argument vs. asking for it. It opens 3 iTerm tabs. 1 running ./script/server, 1 running &lt;a href="http://www.zenspider.com/ZSS/Products/ZenTest/"&gt;autotest&lt;/a&gt; and 1 just sitting in your projects directory. localhost:3000 is then opened in your default browser (usually before the web server is ready) and TextMate is opened with the interesting directories loaded in (does not open ‘logs’ or ‘vendor’ or stuff like that).&lt;/p&gt;

&lt;p&gt;For a long time I ran this as a Finder plugin. That required finding the project in Finder, right clicking on it and saying Automator -&gt; RailsWork. Lately I’ve switched over to having the workflow be a .app and opening my project folder with that .app via &lt;a href="http://quicksilver.blacktree.com/"&gt;QuickSilver&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;I have a &lt;a href="http://briantcooke.com/videos/RailsWork.mov"&gt;48 second screencast of that in action&lt;/a&gt;. And of course, the workflow is available too: &lt;a href="http://briantcooke.com/files/RailsWork.workflow.zip"&gt;RailsWork.workflow.zip&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;update about requirements&lt;/b&gt;: The workflow uses &lt;a href="http://macromates.com"&gt;TextMate&lt;/a&gt;, &lt;a href="http://iterm.sourceforge.net/"&gt;iTerm&lt;/a&gt; and requires TextMate be setup with its ‘mate’ command described &lt;a href="http://macromates.com/textmate/manual/using_textmate_from_terminal"&gt;here&lt;/a&gt;.&lt;/p&gt;
          </content>  <feedburner:origLink>http://blog.briantcooke.com/2007/5/17/my-railswork-automator-script</feedburner:origLink></entry>
  <entry xml:base="http://blog.briantcooke.com/">
    <author>
      <name>BrianC</name>
    </author>
    <id>tag:blog.briantcooke.com,2007-05-02:2022</id>
    <published>2007-05-02T23:36:15Z</published>
    <updated>2007-05-02T23:36:15Z</updated>
    <category term="code" />
    <category term="rails" />
    <link href="http://feedproxy.google.com/~r/briantcooke/~3/rVF_Pf7_roQ/if-you-want-it-it-probably-exists" rel="alternate" type="text/html" />
    <title>If You Want It, It Probably Exists</title>
<content type="html">
            &lt;p&gt;I had the need to highlight some words in some text. I started digging for a plugin to do this and then just some ruby code. Then I finally typed ‘highlight’ into &lt;a href="http://gotapi.com"&gt;gotapi.com&lt;/a&gt; and found this function in ActionView::Helpers::TextHelper:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;
highlight(text, phrase, highlighter = '&lt;strong class="highlight"&gt;\1&lt;/strong&gt;')
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The lesson I learned (again) was to always check the docs first!&lt;/p&gt;
          </content>  <feedburner:origLink>http://blog.briantcooke.com/2007/5/2/if-you-want-it-it-probably-exists</feedburner:origLink></entry>
  <entry xml:base="http://blog.briantcooke.com/">
    <author>
      <name>BrianC</name>
    </author>
    <id>tag:blog.briantcooke.com,2007-05-01:1995</id>
    <published>2007-05-01T20:49:46Z</published>
    <updated>2007-05-01T20:51:13Z</updated>
    <category term="rails" />
    <link href="http://feedproxy.google.com/~r/briantcooke/~3/5AeHLmSdXOU/mybizexpenses-com-moved" rel="alternate" type="text/html" />
    <title>mybizexpenses.com moved</title>
<content type="html">
            &lt;p&gt;&lt;a href="http://mybizexpenses.com"&gt;mybizexpenses.com&lt;/a&gt; was feeling really slow the past week or two. The problem was that it was on the same slice as all my other active projects (3 other rails apps (1 mongrel each)) and had to fight for resources (only 256MB of RAM on the slice). To help with this, I purchased another slice and mybizexpenses is currently all alone. Things should be much more responsive now. &lt;/p&gt;

&lt;p&gt;If you get the “down for maintenance” message, it’ll go away once the DNS change propagates through the tubes.&lt;/p&gt;

&lt;p&gt;Enjoy!&lt;/p&gt;

&lt;p&gt;Oh, and while I was testing the new environment I noticed I have quite a few IE bugs in the AJAX stuff. I’ll fix that up when I get a chance (sorry).&lt;/p&gt;
          </content>  <feedburner:origLink>http://blog.briantcooke.com/2007/5/1/mybizexpenses-com-moved</feedburner:origLink></entry>
  <entry xml:base="http://blog.briantcooke.com/">
    <author>
      <name>BrianC</name>
    </author>
    <id>tag:blog.briantcooke.com,2007-03-28:742</id>
    <published>2007-03-28T14:10:16Z</published>
    <updated>2007-03-28T14:10:16Z</updated>
    <category term="rails" />
    <category term="tips" />
    <link href="http://feedproxy.google.com/~r/briantcooke/~3/MNWbG4pZbh4/screencasts-galore" rel="alternate" type="text/html" />
    <title>Screencasts Galore!</title>
<content type="html">
            &lt;p&gt;I’m a &lt;a href="http://peepcode.com"&gt;peepcode&lt;/a&gt; fan. For $9 you get a great, in depth tutorial on whatever the topic might be.&lt;/p&gt;

&lt;p&gt;A week or two ago I learned about &lt;a href="http://railscasts.com"&gt;railscasts&lt;/a&gt;. These are just as pro as the for pay peepcodes, but they’re free. The big difference being the railscasts are very short. Often less than 5 minutes. Ryan picks something small to cover, and covers it well. Most of the time the topic is fairly novice, but I’d be lying if I said I didn’t &lt;a href="http://railscasts.com/episodes/6"&gt;learn&lt;/a&gt; &lt;a href="http://railscasts.com/episodes/8"&gt;anything&lt;/a&gt;.&lt;/p&gt;
          </content>  <feedburner:origLink>http://blog.briantcooke.com/2007/3/28/screencasts-galore</feedburner:origLink></entry>
</feed>
