samhuri.net/wayback/@done/TextMate Snippets for Rails Assertions - samhuri.net.html

558 lines
No EOL
29 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0124)http://sami.samhuri.net/articles/2006/02/20/textmate-snippets-for-rails-assertions -->
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>TextMate Snippets for Rails Assertions - samhuri.net</title>
<meta content="48.472,-123.3683" name="ICBM">
<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://sami.samhuri.net/xml/rsd">
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://sami.samhuri.net/xml/rss20/article/18/feed.xml">
<link rel="alternate" type="application/atom+xml" title="Atom" href="http://sami.samhuri.net/xml/atom10/article/18/feed.xml">
<script src="./TextMate Snippets for Rails Assertions - samhuri.net_files/cookies.js" type="text/javascript"></script>
<script src="./TextMate Snippets for Rails Assertions - samhuri.net_files/prototype.js" type="text/javascript"></script>
<script src="./TextMate Snippets for Rails Assertions - samhuri.net_files/effects.js" type="text/javascript"></script>
<script src="./TextMate Snippets for Rails Assertions - samhuri.net_files/typo.js" type="text/javascript"></script>
<script type="text/javascript"></script>
<link href="./TextMate Snippets for Rails Assertions - samhuri.net_files/island.css" media="all" rel="Stylesheet" type="text/css">
<link href="./TextMate Snippets for Rails Assertions - samhuri.net_files/user-styles.css" media="all" rel="Stylesheet" type="text/css">
<link href="./TextMate Snippets for Rails Assertions - samhuri.net_files/print.css" media="print" rel="Stylesheet" type="text/css">
<style type="text/css" style="display: none !important;">object:not([type]),object[classid$=":D27CDB6E-AE6D-11cf-96B8-444553540000"],object[classid$=":d27cdb6e-ae6d-11cf-96b8-444553540000"],object[codebase*="swflash.cab"],object[data*=".swf"],object[type="application/x-shockwave-flash"],object[src*=".swf"],object[codetype="application/x-shockwave-flash"],embed[type="application/x-shockwave-flash"],embed[src*=".swf"],embed[allowscriptaccess],embed[flashvars],embed[wmode],object[classid$=":166B1BCA-3F9C-11CF-8075-444553540000"],object[codebase*="sw.cab"],object[data*=".dcr"],object[type="application/x-director"],object[src*=".dcr"],embed[type="application/x-director"],embed[src*=".dcr"],object[classid$=":15B782AF-55D8-11D1-B477-006097098764"],object[codebase*="awswaxf.cab"],object[data*=".aam"],object[type="application/x-authorware-map"],object[src*=".aam"],embed[type="application/x-authorware-map"],embed[src*=".aam"],object[classid$="32C73088-76AE-40F7-AC40-81F62CB2C1DA"],object[type="application/ag-plugin"],object[type="application/x-silverlight"],object[type="application/x-silverlight-2"],object[source*=".xaml"],object[sourceelement*="xaml"],embed[type="application/ag-plugin"],embed[source*=".xaml"]{display: none !important;}</style></head>
<body><div id="wm-ipp" style="position: relative; padding-top: 0px; padding-right: 5px; padding-bottom: 0px; padding-left: 5px; min-height: 70px; min-width: 800px; z-index: 9000; display: block; ">
<div id="wm-ipp-inside" style="position:fixed;padding:0!important;margin:0!important;width:97%;min-width:780px;border:5px solid #000;border-top:none;background-image:url(http://staticweb.archive.org/images/toolbar/wm_tb_bk_trns.png);text-align:center;-moz-box-shadow:1px 1px 3px #333;-webkit-box-shadow:1px 1px 3px #333;box-shadow:1px 1px 3px #333;font-size:11px!important;font-family:&#39;Lucida Grande&#39;,&#39;Arial&#39;,sans-serif!important;">
<table style="border-collapse:collapse;margin:0;padding:0;width:100%;"><tbody><tr>
<td style="padding:10px;vertical-align:top;min-width:110px;">
<a href="http://wayback.archive.org/web/" title="Wayback Machine home page" style="background-color:transparent;border:none;"><img src="./TextMate Snippets for Rails Assertions - samhuri.net_files/wayback-toolbar-logo.png" alt="Wayback Machine" width="110" height="39" border="0"></a>
</td>
<td style="padding:0!important;text-align:center;vertical-align:top;width:100%;">
<table style="border-collapse:collapse;margin:0 auto;padding:0;width:570px;"><tbody><tr>
<td style="padding:3px 0;" colspan="2">
<form target="_top" method="get" action="http://wayback.archive.org/web/form-submit.jsp" name="wmtb" id="wmtb" style="margin:0!important;padding:0!important;"><input type="text" name="url" id="wmtbURL" value="http://sami.samhuri.net/articles/2006/02/20/textmate-snippets-for-rails-assertions" style="width:400px;font-size:11px;font-family:&#39;Lucida Grande&#39;,&#39;Arial&#39;,sans-serif;" onfocus="javascript:this.focus();this.select();"><input type="hidden" name="type" value="replay"><input type="hidden" name="date" value="20070316131730"><input type="submit" value="Go" style="font-size:11px;font-family:&#39;Lucida Grande&#39;,&#39;Arial&#39;,sans-serif;margin-left:5px;"><span id="wm_tb_options" style="display:block;"></span></form>
</td>
<td style="vertical-align:bottom;padding:5px 0 0 0!important;" rowspan="2">
<table style="border-collapse:collapse;width:110px;color:#99a;font-family:&#39;Helvetica&#39;,&#39;Lucida Grande&#39;,&#39;Arial&#39;,sans-serif;"><tbody>
<!-- NEXT/PREV MONTH NAV AND MONTH INDICATOR -->
<tr style="width:110px;height:16px;font-size:10px!important;">
<td style="padding-right:9px;font-size:11px!important;font-weight:bold;text-transform:uppercase;text-align:right;white-space:nowrap;overflow:visible;" nowrap="nowrap">
Feb
</td>
<td id="displayMonthEl" style="background:#000;color:#ff0;font-size:11px!important;font-weight:bold;text-transform:uppercase;width:34px;height:15px;padding-top:1px;text-align:center;" title="You are here: 13:17:30 Mar 16, 2007">MAR</td>
<td style="padding-left:9px;font-size:11px!important;font-weight:bold;text-transform:uppercase;white-space:nowrap;overflow:visible;" nowrap="nowrap">
Apr
</td>
</tr>
<!-- NEXT/PREV CAPTURE NAV AND DAY OF MONTH INDICATOR -->
<tr>
<td style="padding-right:9px;white-space:nowrap;overflow:visible;text-align:right!important;vertical-align:middle!important;" nowrap="nowrap">
<img src="./TextMate Snippets for Rails Assertions - samhuri.net_files/wm_tb_prv_off.png" alt="Previous capture" width="14" height="16" border="0">
</td>
<td id="displayDayEl" style="background:#000;color:#ff0;width:34px;height:24px;padding:2px 0 0 0;text-align:center;font-size:24px;font-weight: bold;" title="You are here: 13:17:30 Mar 16, 2007">16</td>
<td style="padding-left:9px;white-space:nowrap;overflow:visible;text-align:left!important;vertical-align:middle!important;" nowrap="nowrap">
<img src="./TextMate Snippets for Rails Assertions - samhuri.net_files/wm_tb_nxt_off.png" alt="Next capture" width="14" height="16" border="0">
</td>
</tr>
<!-- NEXT/PREV YEAR NAV AND YEAR INDICATOR -->
<tr style="width:110px;height:13px;font-size:9px!important;">
<td style="padding-right:9px;font-size:11px!important;font-weight: bold;text-align:right;white-space:nowrap;overflow:visible;" nowrap="nowrap">
2006
</td>
<td id="displayYearEl" style="background:#000;color:#ff0;font-size:11px!important;font-weight: bold;padding-top:1px;width:34px;height:13px;text-align:center;" title="You are here: 13:17:30 Mar 16, 2007">2007</td>
<td style="padding-left:9px;font-size:11px!important;font-weight: bold;white-space:nowrap;overflow:visible;" nowrap="nowrap">
2008
</td>
</tr>
</tbody></table>
</td>
</tr>
<tr>
<td style="vertical-align:middle;padding:0!important;">
<a href="http://wayback.archive.org/web/20070316131730*/http://sami.samhuri.net/articles/2006/02/20/textmate-snippets-for-rails-assertions" style="color:#33f;font-size:11px;font-weight:bold;background-color:transparent;border:none;" title="See a list of every capture for this URL"><strong>1 captures</strong></a>
<div style="margin:0!important;padding:0!important;color:#666;font-size:9px;padding-top:2px!important;white-space:nowrap;" title="Timespan for captures of this URL">16 Mar 07 - 16 Mar 07</div>
</td>
<td style="padding:0!important;">
<a style="position:relative; white-space:nowrap; width:400px;height:27px;" href="" id="wm-graph-anchor">
<div id="wm-ipp-sparkline" style="position:relative; white-space:nowrap; width:400px;height:27px;background-color:#fff;cursor:pointer;border-right:1px solid #ccc;" title="Explore captures for this URL">
<img id="sparklineImgId" style="position:absolute; z-index:9012; top:0px; left:0px;" onmouseover="showTrackers(&#39;inline&#39;);" onmouseout="showTrackers(&#39;none&#39;);" onmousemove="trackMouseMove(event,this)" alt="sparklines" width="400" height="27" border="0" src="./TextMate Snippets for Rails Assertions - samhuri.net_files/graph.jsp">
<img id="wbMouseTrackYearImg" style="display:none; position:absolute; z-index:9010;" width="25" height="27" border="0" src="./TextMate Snippets for Rails Assertions - samhuri.net_files/transp-yellow-pixel.png">
<img id="wbMouseTrackMonthImg" style="display:none; position:absolute; z-index:9011; " width="2" height="27" border="0" src="./TextMate Snippets for Rails Assertions - samhuri.net_files/transp-red-pixel.png">
</div>
</a>
</td>
</tr></tbody></table>
</td>
<td style="text-align:right;padding:5px;width:65px;font-size:11px!important;">
<a href="javascript:;" onclick="document.getElementById(&#39;wm-ipp&#39;).style.display=&#39;none&#39;;" style="display:block;padding-right:18px;background:url(http://staticweb.archive.org/images/toolbar/wm_tb_close.png) no-repeat 100% 0;color:#33f;font-family:&#39;Lucida Grande&#39;,&#39;Arial&#39;,sans-serif;margin-bottom:23px;background-color:transparent;border:none;" title="Close the toolbar">Close</a>
<a href="http://faq.web.archive.org/" style="display:block;padding-right:18px;background:url(http://staticweb.archive.org/images/toolbar/wm_tb_help.png) no-repeat 100% 0;color:#33f;font-family:&#39;Lucida Grande&#39;,&#39;Arial&#39;,sans-serif;background-color:transparent;border:none;" title="Get some help using the Wayback Machine">Help</a>
</td>
</tr></tbody></table>
</div>
</div>
<!-- BEGIN WAYBACK TOOLBAR INSERT -->
<script type="text/javascript" src="./TextMate Snippets for Rails Assertions - samhuri.net_files/disclaim-element.js"></script>
<script type="text/javascript" src="./TextMate Snippets for Rails Assertions - samhuri.net_files/graph-calc.js"></script>
<script type="text/javascript" src="./TextMate Snippets for Rails Assertions - samhuri.net_files/jquery.min.js"></script>
<script type="text/javascript">
//<![CDATA[
var firstDate = 820454400000;
var lastDate = 1325375999999;
var wbPrefix = "http://web.archive.org/web/";
var wbCurrentUrl = "http://sami.samhuri.net/articles/2006/02/20/textmate-snippets-for-rails-assertions";
var curYear = -1;
var curMonth = -1;
var yearCount = 16;
var firstYear = 1996;
var imgWidth=400;
var yearImgWidth = 25;
var monthImgWidth = 2;
var trackerVal = "none";
var displayDay = "16";
var displayMonth = "Mar";
var displayYear = "2007";
var prettyMonths = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
function showTrackers(val) {
if(val == trackerVal) {
return;
}
if(val == "inline") {
document.getElementById("displayYearEl").style.color = "#ec008c";
document.getElementById("displayMonthEl").style.color = "#ec008c";
document.getElementById("displayDayEl").style.color = "#ec008c";
} else {
document.getElementById("displayYearEl").innerHTML = displayYear;
document.getElementById("displayYearEl").style.color = "#ff0";
document.getElementById("displayMonthEl").innerHTML = displayMonth;
document.getElementById("displayMonthEl").style.color = "#ff0";
document.getElementById("displayDayEl").innerHTML = displayDay;
document.getElementById("displayDayEl").style.color = "#ff0";
}
document.getElementById("wbMouseTrackYearImg").style.display = val;
document.getElementById("wbMouseTrackMonthImg").style.display = val;
trackerVal = val;
}
function getElementX2(obj) {
var thing = jQuery(obj);
if((thing == undefined)
|| (typeof thing == "undefined")
|| (typeof thing.offset == "undefined")) {
return getElementX(obj);
}
return Math.round(thing.offset().left);
}
function trackMouseMove(event,element) {
var eventX = getEventX(event);
var elementX = getElementX2(element);
var xOff = eventX - elementX;
if(xOff < 0) {
xOff = 0;
} else if(xOff > imgWidth) {
xOff = imgWidth;
}
var monthOff = xOff % yearImgWidth;
var year = Math.floor(xOff / yearImgWidth);
var yearStart = year * yearImgWidth;
var monthOfYear = Math.floor(monthOff / monthImgWidth);
if(monthOfYear > 11) {
monthOfYear = 11;
}
// 1 extra border pixel at the left edge of the year:
var month = (year * 12) + monthOfYear;
var day = 1;
if(monthOff % 2 == 1) {
day = 15;
}
var dateString =
zeroPad(year + firstYear) +
zeroPad(monthOfYear+1,2) +
zeroPad(day,2) + "000000";
var monthString = prettyMonths[monthOfYear];
document.getElementById("displayYearEl").innerHTML = year + 1996;
document.getElementById("displayMonthEl").innerHTML = monthString;
// looks too jarring when it changes..
//document.getElementById("displayDayEl").innerHTML = zeroPad(day,2);
var url = wbPrefix + dateString + '/' + wbCurrentUrl;
document.getElementById('wm-graph-anchor').href = url;
//document.getElementById("wmtbURL").value="evX("+eventX+") elX("+elementX+") xO("+xOff+") y("+year+") m("+month+") monthOff("+monthOff+") DS("+dateString+") Moy("+monthOfYear+") ms("+monthString+")";
if(curYear != year) {
var yrOff = year * yearImgWidth;
document.getElementById("wbMouseTrackYearImg").style.left = yrOff + "px";
curYear = year;
}
if(curMonth != month) {
var mtOff = year + (month * monthImgWidth) + 1;
document.getElementById("wbMouseTrackMonthImg").style.left = mtOff + "px";
curMonth = month;
}
}
//]]>
</script>
<style type="text/css">body{margin-top:0!important;padding-top:0!important;min-width:800px!important;}#wm-ipp a:hover{text-decoration:underline!important;}</style>
<script type="text/javascript">
var wmDisclaimBanner = document.getElementById("wm-ipp");
if(wmDisclaimBanner != null) {
disclaimElement(wmDisclaimBanner);
}
</script>
<!-- END WAYBACK TOOLBAR INSERT -->
<div id="content" class="clearfix">
<div id="main">
<!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"
xmlns:dc="http://purl.org/dc/elements/1.1/">
<rdf:Description
rdf:about=""
trackback:ping="http://sami.samhuri.net/articles/trackback/18"
dc:title="TextMate Snippets for Rails Assertions"
dc:identifier="http://sami.samhuri.net/articles/read/18"
dc:description="This time I&amp;#8217;ve got a few snippets for assertions. Using these to type up your tests quickly, and then hitting &amp;#8984;R to run the tests without leaving TextMate, makes testing your Rails app that much more convenient. Just when yo"
dc:creator="sjs"
dc:date="2007-03-06T19:53:43-08:00" />
</rdf:RDF>
-->
<div class="post" onmouseover="if (getCookie(&#39;is_admin&#39;) == &#39;yes&#39;) { Element.show(&#39;admin_article&#39;); }" onmouseout="Element.hide(&#39;admin_article&#39;);">
<a href="http://sami.samhuri.net/admin/content/edit/18" class="admintools" id="admin_article" style="display: none">edit</a>
<h2>TextMate Snippets for Rails Assertions</h2>
<p class="auth"><!-- Posted by <a href="mailto:sjs@uvic.ca">Sami Jensen Samhuri</a> -->
<span class="typo_date" title="Tue, 21 Feb 2006 07:52:00 GMT">on Monday, February 20, 2006</span></p>
<p>This time I've got a few snippets for assertions. Using these to type up your tests quickly, and then hitting <strong>⌘R</strong> to run the tests without leaving TextMate, makes testing your Rails app that much more convenient. Just when you thought it was already too easy! (Don't forget that you can use <strong>⌥⌘↓</strong> to move between your code and the corresponding test case.)</p>
<p>This time I'm posting the .plist files to make it easier for you to add them to TextMate. All you need to do is copy these to <strong>~/Library/Application Support/TextMate/Bundles/Rails.tmbundle/Snippets</strong>.</p>
<p style="text-align: center;;"><a href="http://sami.samhuri.net/files/assert_snippets.zip">Assertion Snippets for Rails</a></p>
<p>If anyone would rather I list them all here I can do that as well. Just leave a comment.</p>
<p><em>(I wanted to include a droplet in the zip file that will copy the snippets to the right place, but my 3-hour attempt at writing the AppleScript to do so left me feeling quite bitter. Maybe I was just mistaken in thinking it would be easy to pick up AppleScript.)</em></p>
</div>
<p class="meta">
Posted in <a href="http://sami.samhuri.net/articles/category/textmate" rel="tag">textmate</a>, <a href="http://sami.samhuri.net/articles/category/rails" rel="tag">rails</a>, <a href="http://sami.samhuri.net/articles/category/hacking" rel="tag">coding</a>&nbsp;<strong>|</strong>&nbsp;Tags <a href="http://sami.samhuri.net/articles/tag/rails" rel="tag">rails</a>, <a href="http://sami.samhuri.net/articles/tag/snippets" rel="tag">snippets</a>, <a href="http://sami.samhuri.net/articles/tag/testing" rel="tag">testing</a>, <a href="http://sami.samhuri.net/articles/tag/textmate" rel="tag">textmate</a>&nbsp;<strong>|</strong>&nbsp;<a href="http://sami.samhuri.net/articles/2006/02/20/textmate-snippets-for-rails-assertions#comments">no comments</a>&nbsp;<strong>|</strong>&nbsp;<a href="http://sami.samhuri.net/articles/2006/02/20/textmate-snippets-for-rails-assertions#trackbacks">no trackbacks</a>
</p>
<a name="comments"></a><h4 class="blueblk">Comments</h4>
<p class="postmetadata alt">
<small><a href="http://sami.samhuri.net/articles/2006/02/20/textmate-snippets-for-rails-assertions#respond">Leave a response</a></small>
</p>
<ol class="comment-list" id="commentList">
<li id="dummy_comment" style="display: none"></li>
</ol>
<a name="trackbacks"></a><h4 class="blueblk">Trackbacks</h4>
<p>
Use the following link to trackback from your own site:<br>
<span class="light-bg">http://sami.samhuri.net/articles/trackback/18</span>
</p>
<p class="postmetadata alt">
<small>
<a href="http://sami.samhuri.net/xml/rss20/article/18/feed.xml" title="RSS Feed">RSS feed for this post</a>
<a href="http://sami.samhuri.net/articles/trackback/18">trackback uri</a>
</small>
</p>
<form action="http://sami.samhuri.net/articles/comment/18" class="commentform" id="commentform" method="post" onsubmit="new Ajax.Updater({success:&#39;commentList&#39;}, &#39;/articles/comment/18&#39;, {asynchronous:true, evalScripts:true, insertion:Insertion.Bottom, onComplete:function(request){complete(request)}, onFailure:function(request){failure(request)}, onLoading:function(request){loading()}, parameters:Form.serialize(this)}); return false;">
<div class="comment-box">
<div id="errors"></div>
<div id="preview" style="display: none"></div>
<a name="respond"></a>
<table cellpadding="4" cellspacing="0" class="frm-tbl">
<tbody><tr>
<td><p><label for="comment_author">Your name</label></p></td>
<td> <input id="comment_author" name="comment[author]" size="20" type="text"> <small><a href="http://sami.samhuri.net/articles/2006/02/20/textmate-snippets-for-rails-assertions#" onclick="Element.toggle(&#39;guest_url&#39;); Element.toggle(&#39;guest_email&#39;); return false;">(leave url/email »)</a></small></td>
</tr>
<tr id="guest_url" style="display:none;">
<td><p><label for="comment_url">Your blog</label></p></td>
<td> <input id="comment_url" name="comment[url]" size="30" type="text"></td>
</tr>
<tr id="guest_email" style="display:none;">
<td><p><label for="comment_email">Your email</label></p></td>
<td> <input id="comment_email" name="comment[email]" size="30" type="text"></td>
</tr>
<tr>
<td><p><label for="comment_body">Your message</label></p></td>
<td valign="top" colspan="2">
<textarea cols="40" id="comment_body" name="comment[body]" rows="20"></textarea>
</td>
</tr>
<tr>
<td colspan="2" id="frm-btns">
<span id="comment_loading" style="display:none;"><img alt="Spinner" src="./TextMate Snippets for Rails Assertions - samhuri.net_files/spinner.gif"></span>&nbsp;&nbsp;
<a href="http://sami.samhuri.net/articles/2006/02/20/textmate-snippets-for-rails-assertions#" onclick="new Ajax.Updater(&#39;preview&#39;, &#39;/articles/comment_preview&#39;, {asynchronous:true, evalScripts:true, parameters:Form.serialize(&#39;commentform&#39;), onComplete:function(request){Element.show(&#39;preview&#39;)}}); return false;">Preview comment</a>
<input type="submit" name="submit" id="form-submit-button" value="submit" class="button">
</td>
</tr>
</tbody></table>
</div>
</form>
<script type="text/javascript">
//<![CDATA[
show_dates_as_local_time()
//]]>
</script>
</div>
</div>
<div id="leftcolumn">
<div id="header">
<h1 id="sitename"><a href="http://sami.samhuri.net/">sjs</a></h1>
<h2 id="subtitle">&nbsp;</h2>
</div>
<div id="sidebar">
<div id="search"><form action="http://sami.samhuri.net/articles/search" id="sform" method="get">
<label for="q">Search: </label><input type="text" id="q" name="q" value="" size="15">
<img alt="Spinner-blue" id="search_spinner" src="./TextMate Snippets for Rails Assertions - samhuri.net_files/spinner-blue.gif" style="display:none;">
</form>
<script type="text/javascript">
//<![CDATA[
new Form.Element.Observer('q', 1, function(element, value) {new Ajax.Updater('search-results', '/live/search', {asynchronous:true, evalScripts:true, onComplete:function(request){Element.hide('search_spinner')}, onLoading:function(request){Element.show('search_spinner')}, parameters:'q=' + escape($F('q'))})})
//]]>
</script></div>
<div id="search-results"></div>
<div class="sidebar-node">
<h3>All about...</h3>
<ul>
<li><a href="http://sami.samhuri.net/pages/about">a bit about me</a></li>
<li><a href="http://sami.samhuri.net/pages/thunder">workstation</a></li>
</ul>
</div>
<div class="sidebar-node">
<h3>Categories</h3>
<ul id="categories">
<li><a href="http://sami.samhuri.net/articles/category/amusement">amusement</a> <em>(5)</em></li>
<li><a href="http://sami.samhuri.net/articles/category/gentoo">gentoo</a> <em>(1)</em></li>
<li><a href="http://sami.samhuri.net/articles/category/hacking">coding</a> <em>(17)</em></li>
<li><a href="http://sami.samhuri.net/articles/category/life">life</a> <em>(5)</em></li>
<li><a href="http://sami.samhuri.net/articles/category/linux">linux</a> <em>(2)</em></li>
<li><a href="http://sami.samhuri.net/articles/category/mac-os-x">mac os x</a> <em>(7)</em></li>
<li><a href="http://sami.samhuri.net/articles/category/python">python</a> <em>(1)</em></li>
<li><a href="http://sami.samhuri.net/articles/category/rails">rails</a> <em>(12)</em></li>
<li><a href="http://sami.samhuri.net/articles/category/ruby">ruby</a> <em>(1)</em></li>
<li><a href="http://sami.samhuri.net/articles/category/technology">technology</a> <em>(5)</em></li>
<li><a href="http://sami.samhuri.net/articles/category/textmate">textmate</a> <em>(10)</em></li>
<li><a href="http://sami.samhuri.net/articles/category/apple">apple</a> <em>(8)</em></li>
<li><a href="http://sami.samhuri.net/articles/category/php">php</a> <em>(4)</em></li>
<li><a href="http://sami.samhuri.net/articles/category/windows">windows</a> <em>(1)</em></li>
<li><a href="http://sami.samhuri.net/articles/category/bootcamp">bootcamp</a> <em>(1)</em></li>
<li><a href="http://sami.samhuri.net/articles/category/parallels">parallels</a> <em>(1)</em></li>
<li><a href="http://sami.samhuri.net/articles/category/firefox">firefox</a> <em>(1)</em></li>
</ul>
</div>
<div class="sidebar-node">
<h3>Archives</h3>
<ul id="archives">
<li>
<a href="http://sami.samhuri.net/articles/2007/03">March 2007</a>
<em>(2)</em>
</li>
<li>
<a href="http://sami.samhuri.net/articles/2006/12">December 2006</a>
<em>(1)</em>
</li>
<li>
<a href="http://sami.samhuri.net/articles/2006/09">September 2006</a>
<em>(2)</em>
</li>
<li>
<a href="http://sami.samhuri.net/articles/2006/08">August 2006</a>
<em>(1)</em>
</li>
<li>
<a href="http://sami.samhuri.net/articles/2006/07">July 2006</a>
<em>(5)</em>
</li>
<li>
<a href="http://sami.samhuri.net/articles/2006/06">June 2006</a>
<em>(4)</em>
</li>
<li>
<a href="http://sami.samhuri.net/articles/2006/05">May 2006</a>
<em>(2)</em>
</li>
<li>
<a href="http://sami.samhuri.net/articles/2006/04">April 2006</a>
<em>(1)</em>
</li>
<li>
<a href="http://sami.samhuri.net/articles/2006/03">March 2006</a>
<em>(4)</em>
</li>
<li>
<a href="http://sami.samhuri.net/articles/2006/02">February 2006</a>
<em>(1)</em>
</li>
</ul>
</div>
<div class="sidebar-node">
<h3>Links</h3>
<ul>
<li><a href="http://phox.ca/cswiki/Main_Page">CSWiki</a></li>
<li><a href="http://jim.roepcke.com/">Have Browser, Will Travel</a></li>
<li><a href="http://blog.inquirylabs.com/">Going Up</a></li>
<li><a href="http://www.mirage.org/">encieno</a></li>
<li><a href="http://www.nofxwiki.net/">nofxwiki.net</a></li>
<li>sami at samhuri dot net</li>
</ul>
</div>
<div class="sidebar-node">
<ul>
<li><a class="feed" href="http://sami.samhuri.net/xml/rss20/feed.xml" title="Articles feed"><img src="./TextMate Snippets for Rails Assertions - samhuri.net_files/feed-icon-48x48.png" alt="RSS 2.0" width="48" height="48"></a></li>
<!--
-->
</ul>
</div>
<br clear="all">
</div>
</div>
<div id="footer">
<ul>
<li><a href="http://typo.leetsoft.com/">Typo</a></li>
<li></li>
<li><a href="http://validator.w3.org/check?uri=referer">Valid XHTML</a></li>
<li></li>
<li><a href="http://jigsaw.w3.org/css-validator/validator?uri=http://sami.samhuri.net/">Valid CSS</a></li>
</ul>
</div>
<script src="./TextMate Snippets for Rails Assertions - samhuri.net_files/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-214054-3";
urchinTracker();
</script>
<!--
FILE ARCHIVED ON 13:17:30 Mar 16, 2007 AND RETRIEVED FROM THE
INTERNET ARCHIVE ON 2:46:45 Aug 21, 2011.
JAVASCRIPT APPENDED BY WAYBACK MACHINE, COPYRIGHT INTERNET ARCHIVE.
ALL OTHER CONTENT MAY ALSO BE PROTECTED BY COPYRIGHT (17 U.S.C.
SECTION 108(a)(3)).
-->
<div id="footnotify_lightbox" style="position: fixed; width: 100%; height: 100%; top: 0px; left: 0px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgba(0, 0, 0, 0.699219); display: none; background-position: initial initial; background-repeat: initial initial; "></div><div id="footnotify_holder" style="position: absolute; display: none; "><div id="footnotify_arrow" style="letter-spacing: -1px; width: 32px; margin-top: 0px; margin-right: -11px; margin-bottom: 0px; margin-left: -11px; text-align: center; font-size: 13px; padding-top: 2em; line-height: 0.9em; color: rgb(0, 0, 0); ">◢◣</div><div id="footnotify_panel" style="padding-top: 1px; padding-right: 1px; padding-bottom: 1px; padding-left: 1px; margin-top: 0px; margin-right: -240px; margin-bottom: 0px; margin-left: -240px; width: 480px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgb(0, 0, 0); color: inherit; background-position: initial initial; background-repeat: initial initial; "><div id="footnotify_content" style="margin-top: 2em; margin-right: 2em; margin-bottom: 2em; margin-left: 2em; "></div></div></div><div id="footnotify_notification" style="position: fixed; top: 5px; left: 5px; z-index: 999; padding-top: 1em; padding-right: 1em; padding-bottom: 1em; padding-left: 1em; color: rgb(255, 255, 255); background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: rgba(0, 0, 0, 0.699219); display: none; background-position: initial initial; background-repeat: initial initial; "></div></body></html>