<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title>Rogelio J. Samour</title>
  <link href="http://feeds.feedburner.com/TheRubyMug" type="application/atom+xml" rel="self" />
  <link href="http://blog.therubymug.com/" type="text/html" rel="alternate" />
  <updated>2012-01-29T16:26:29-05:00</updated>
  <author>
    <name>Rogelio J. Samour</name>
    <email>blog@therubymug.com</email>
  </author>
  <id>http://blog.therubymug.com/</id>
  
  <entry>
    <title>The Install (Lion Edition)</title>
    <link rel="alternate" type="text/html" href="http://blog.therubymug.com/blog/2011/07/26/the-install-osx-lion.html" />
    
    <id>tag:blog.therubymug.com,2011-07-26:1311709877</id>
    
    <published>2011-07-26T15:51:17-04:00</published>
    <updated>2011-07-26T15:51:17-04:00</updated>
    <content type="html">&lt;p&gt;&lt;strong&gt;update&lt;/strong&gt;: [2011-08-23] minor updates&lt;br /&gt;
&lt;strong&gt;update&lt;/strong&gt;: [2011-11-05] I have automated this blog post into a shell script. Check it out &lt;a href=&quot;https://gist.github.com/1341873&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;TL;DR&lt;/h3&gt;
&lt;p&gt;- Copy &amp;amp; paste the following into a Terminal window:&lt;/p&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;test -f /tmp/the_install.sh &amp;amp;&amp;amp; rm /tmp/the_install.sh&lt;tt&gt;
&lt;/tt&gt;curl -s\&lt;tt&gt;
&lt;/tt&gt;  https://raw.github.com/gist/1341873/60ccc411faadf1194941d7b65347ec09b10adac2/the_install.sh \&lt;tt&gt;
&lt;/tt&gt;  -o /tmp/the_install.sh&lt;tt&gt;
&lt;/tt&gt;chmod 0700 /tmp/the_install.sh&lt;tt&gt;
&lt;/tt&gt;. /tmp/the_install.sh&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;The saga continues&lt;/h3&gt;
&lt;p&gt;So this is the follow-up post to &lt;a href=&quot;http://blog.therubymug.com/blog/2010/05/20/the-install-osx.html&quot;&gt;The Install &amp;#8211; Snow Leopard Edition&lt;/a&gt; which helped you, the &lt;a href=&quot;http://ruby-lang.org&quot;&gt;Ruby&lt;/a&gt; developer, set up a near-perfect development environment in Mac OS X. Only this time it&amp;#8217;s on Apple&amp;#8217;s latest version of Mac OS X, 10.7 (Lion). Again, feel free to copy and paste the commands into your terminal.&lt;/p&gt;
&lt;h3&gt;Take-away&lt;/h3&gt;
&lt;p&gt;This post walks you through setting up a very sustainable &lt;a href=&quot;http://ruby-lang.org&quot;&gt;Ruby&lt;/a&gt; development environment on your Mac. You&amp;#8217;ll be able to write &lt;a href=&quot;http://rubyonrails.org&quot;&gt;Ruby on Rails&lt;/a&gt; apps along with anything else that uses Ruby. e.g. &lt;a href=&quot;http://www.sinatrarb.com&quot;&gt;Sinatra&lt;/a&gt;, &lt;a href=&quot;http://www.padrinorb.com&quot;&gt;Padrino&lt;/a&gt;, &lt;a href=&quot;http://www.merbivore.com/index.html&quot;&gt;Merb&lt;/a&gt;, et al. It is also the setup we use everyday at &lt;a href=&quot;http://hashrocket.com&quot;&gt;Hashrocket&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;A Word of Caution&lt;/h3&gt;
&lt;p&gt;As usual, while it is unlikely any instruction given below  might damage your system, it’s always a good idea to back up everything before doing any of it, just in case. I am not responsible for anything that may result from following the instructions below. Proceed at your own risk.&lt;/p&gt;
&lt;h3&gt;Step 0:&lt;/h3&gt;
&lt;p&gt;- &lt;a href=&quot;http://guide.macports.org/chunked/installing.macports.uninstalling.html&quot;&gt;Uninstall MacPorts!&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Prerequisite OS X Apps:&lt;/h3&gt;
&lt;p&gt;- &lt;a href=&quot;http://www.google.com/chrome&quot;&gt;Chrome&lt;/a&gt; (+ vimium)&lt;br /&gt;
- &lt;a href=&quot;http://www.getfirefox.com&quot;&gt;Firefox&lt;/a&gt; (+ firebug, &lt;del&gt;note that Selenium is not yet compatible with Firefox 5&lt;/del&gt;)&lt;br /&gt;
- &lt;a href=&quot;http://fluidapp.com/&quot;&gt;Fluid.app&lt;/a&gt;&lt;br /&gt;
- &lt;a href=&quot;http://gitx.frim.nl/&quot;&gt;Gitx&lt;/a&gt;&lt;br /&gt;
- &lt;a href=&quot;http://www.irradiatedsoftware.com/sizeup/&quot;&gt;SizeUp&lt;/a&gt;&lt;br /&gt;
- &lt;a href=&quot;http://www.abyssoft.com/software/teleport/&quot;&gt;Teleport&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Install Xcode&lt;/h3&gt;
&lt;p&gt;You &lt;em&gt;need&lt;/em&gt; to install Xcode for &lt;em&gt;homebrew&lt;/em&gt; to compile code from source. It&amp;#8217;s free in the Mac App Store! &lt;a href=&quot;http://itunes.apple.com/us/app/xcode/id448457090?mt=12&quot;&gt;Xcode&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;OS X Named Streams issue &lt;sup class=&quot;footnote&quot; id=&quot;fnr1&quot;&gt;&lt;a href=&quot;#fn1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/h3&gt;
&lt;p&gt;- Fix it system wide, with the following:&lt;/p&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;echo &amp;quot;[default]&amp;quot; | sudo tee /etc/nsmb.conf&lt;tt&gt;
&lt;/tt&gt;echo &amp;quot;streams=no&amp;quot; | sudo tee -a /etc/nsmb.conf&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Install homebrew&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;sudo mkdir /usr/local&lt;tt&gt;
&lt;/tt&gt;sudo chown -R `whoami` /usr/local&lt;tt&gt;
&lt;/tt&gt;curl -L https://github.com/mxcl/homebrew/tarball/master | tar xz --strip 1 -C /usr/local&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Create .bash_profile&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; echo &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;. &amp;quot;$HOME/.bashrc&amp;quot;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt; &amp;gt; ~&lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.bash_profile&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Install MacVim&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; brew install macvim&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Install utilities&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; brew install wget proctools ack ctags-exuberant markdown&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Install ImageMagick &lt;em&gt;(optional)&lt;/em&gt;&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; brew install imagemagick&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Get git&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; brew install git&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;dotfiles, dev folder&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;mkdir ~/hashrocket&lt;tt&gt;
&lt;/tt&gt;cd ~/hashrocket&lt;tt&gt;
&lt;/tt&gt;git clone https://github.com/hashrocket/dotmatrix.git&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;ln -s ~/hashrocket/dotmatrix/.bashrc ~/&lt;tt&gt;
&lt;/tt&gt;ln -s ~/hashrocket/dotmatrix/.hashrc ~/&lt;tt&gt;
&lt;/tt&gt;ln -s ~/hashrocket/dotmatrix/.vim ~/&lt;tt&gt;
&lt;/tt&gt;ln -s ~/hashrocket/dotmatrix/.vimrc ~/&lt;tt&gt;
&lt;/tt&gt;sh ~/hashrocket/dotmatrix/bin/vimbundles.sh&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Install &lt;a href=&quot;http://rvm.beginrescueend.com/rvm/install/&quot;&gt;rvm&lt;/a&gt;&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;12&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;bash &amp;lt; &amp;lt;(curl -s https://rvm.beginrescueend.com/install/rvm)&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;echo 'if [[ -s &amp;quot;$HOME/.rvm/scripts/rvm&amp;quot; ]] ; then source &amp;quot;$HOME/.rvm/scripts/rvm&amp;quot; ; fi' \&lt;tt&gt;
&lt;/tt&gt;       &amp;gt;&amp;gt; ~/.bashrc.local&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;echo -e &amp;quot;export rvm_project_rvmrc_default=1&lt;tt&gt;
&lt;/tt&gt;export rvm_install_on_use_flag=1&lt;tt&gt;
&lt;/tt&gt;export rvm_project_rvmrc=1&lt;tt&gt;
&lt;/tt&gt;export rvm_path='$HOME/.rvm'&amp;quot; &amp;gt; ~/.rvmrc&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;echo '[[ -r $rvm_path/scripts/completion ]] &amp;amp;&amp;amp; source $rvm_path/scripts/completion' \&lt;tt&gt;
&lt;/tt&gt;       &amp;gt;&amp;gt; ~/.bashrc.local # rvm autocompletion&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Create your .gemrc by copying &amp;amp; pasting the following in your terminal:&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;echo -e '---&lt;tt&gt;
&lt;/tt&gt;:benchmark: false&lt;tt&gt;
&lt;/tt&gt;gem: --no-ri --no-rdoc&lt;tt&gt;
&lt;/tt&gt;:update_sources: true&lt;tt&gt;
&lt;/tt&gt;:bulk_threshold: 1000&lt;tt&gt;
&lt;/tt&gt;:verbose: true&lt;tt&gt;
&lt;/tt&gt;:sources:&lt;tt&gt;
&lt;/tt&gt;- http://rubygems.org&lt;tt&gt;
&lt;/tt&gt;:backtrace: false' &amp;gt; ~/.gemrc&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Setup your &lt;em&gt;global&lt;/em&gt; gems&lt;/h3&gt;
A neat feature of rvm is defining the gems every &lt;em&gt;rvm-controlled&lt;/em&gt; ruby will install on its &lt;em&gt;global&lt;/em&gt; gemset. More &lt;a href=&quot;http://blog.therubymug.com/blog/2010/09/23/going-global-with-rvm-gemsets.html&quot;&gt;here&lt;/a&gt;
&lt;p&gt;Simply add your desired gems to the file: ~/.rvm/gemsets/global.gems like so:&lt;/p&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;rake -v0.9.2&lt;tt&gt;
&lt;/tt&gt;hitch&lt;tt&gt;
&lt;/tt&gt;dirty&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Now&lt;/strong&gt; each time you &lt;code&gt;rvm install&lt;/code&gt; a ruby version, you&amp;#8217;ll have hitch, dirty and rake version 0.9.2!&lt;/p&gt;
&lt;h3&gt;Install the rubies to your heart&amp;#8217;s content&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;rvm install 1.8.7&lt;tt&gt;
&lt;/tt&gt;rvm install 1.9.2&lt;tt&gt;
&lt;/tt&gt;rvm use 1.9.2 --default&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;&lt;code&gt;Mongo&lt;/code&gt;&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; brew install mongo &lt;span class=&quot;c&quot;&gt;# Follow instructions&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;&lt;code&gt;Postgresql&lt;/code&gt;&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; brew install postgresql &lt;span class=&quot;c&quot;&gt;# Follow instructions&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;&lt;code&gt;MySQL&lt;/code&gt;&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; brew install mysql &lt;span class=&quot;c&quot;&gt;# Follow instructions&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Generate a pubkey for this box&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;ssh-keygen -t rsa&lt;tt&gt;
&lt;/tt&gt;# Add public key to your github account&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h1&gt;&lt;em&gt;Enjoy&lt;/em&gt;&lt;/h1&gt;
&lt;p class=&quot;footnote&quot; id=&quot;fn1&quot;&gt;&lt;a href=&quot;#fnr1&quot;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt; &lt;a href=&quot;http://support.apple.com/kb/HT4017&quot;&gt;More info&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Going Global with RVM Gemsets</title>
    <link rel="alternate" type="text/html" href="http://blog.therubymug.com/blog/2010/09/23/going-global-with-rvm-gemsets.html" />
    
    <id>tag:blog.therubymug.com,2010-09-23:1285289297</id>
    
    <published>2010-09-23T20:48:17-04:00</published>
    <updated>2010-09-23T20:48:17-04:00</updated>
    <content type="html">&lt;p&gt;I wanted to share briefly on installing &lt;a href=&quot;http://rvm.beginrescueend.com/gemsets/initial&quot;&gt;global or default gems&lt;/a&gt; in your rvm-controlled rubies. So here it is, say you wanted to always have a certain list of gems installed in all versions of ruby that your rvm controls. Right now you&amp;#8217;d have to do something like this to install one or more gems in all your rubies:&lt;/p&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;for x in $(rvm list strings)&lt;tt&gt;
&lt;/tt&gt;do&lt;tt&gt;
&lt;/tt&gt;  rvm use $x@global &amp;amp;&amp;amp; gem install hitch bundler&lt;tt&gt;
&lt;/tt&gt;done&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;And the above works great for your existing rubies. However, going forward the best thing to do is to make your ~/.rvm/gemsets/global.gems look like so:&lt;/p&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;bundler&lt;tt&gt;
&lt;/tt&gt;hitch&lt;tt&gt;
&lt;/tt&gt;mysql&lt;tt&gt;
&lt;/tt&gt;rake&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;Perfecto! Now the next time you install a new ruby version, bundler, hitch, mysql and rake will be available across all &lt;a href=&quot;http://rvm.beginrescueend.com/gemsets/basics&quot;&gt;gemsets&lt;/a&gt;!&lt;/p&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;12&lt;tt&gt;
&lt;/tt&gt;13&lt;tt&gt;
&lt;/tt&gt;14&lt;tt&gt;
&lt;/tt&gt;15&lt;tt&gt;
&lt;/tt&gt;16&lt;tt&gt;
&lt;/tt&gt;17&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;$ rvm install 1.9.2&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;[...] blah blah Installing Ruby blah blah [...]&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;$ rvm use 1.9.2&lt;tt&gt;
&lt;/tt&gt;Using ~/.rvm/gems/ruby-1.9.2-p0&lt;tt&gt;
&lt;/tt&gt;$ gem list&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;*** LOCAL GEMS ***&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;bundler (1.0.0)&lt;tt&gt;
&lt;/tt&gt;highline (1.6.1)&lt;tt&gt;
&lt;/tt&gt;hitch (0.6.0)&lt;tt&gt;
&lt;/tt&gt;mysql (2.8.1)&lt;tt&gt;
&lt;/tt&gt;rake (0.8.7)&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;$&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Now&lt;/strong&gt; you can do the following to retrofit your currently installed rubies:&lt;/p&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;for x in $(rvm list strings)&lt;tt&gt;
&lt;/tt&gt;do&lt;tt&gt;
&lt;/tt&gt;  rvm use $x@global &amp;amp;&amp;amp; gem install $(cat ~/.rvm/gemsets/global.gems)&lt;tt&gt;
&lt;/tt&gt;done&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;For more info on how to get your environment setup to use rvm in all its glory, go &lt;a href=&quot;http://blog.therubymug.com/blog/2010/05/20/the-install-osx.html&quot;&gt;here.&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Let's Hitch and Hack Forever</title>
    <link rel="alternate" type="text/html" href="http://blog.therubymug.com/blog/2010/08/25/lets-hitch-and-hack-forever.html" />
    
    <id>tag:blog.therubymug.com,2010-08-25:1282713532</id>
    
    <published>2010-08-25T01:18:52-04:00</published>
    <updated>2010-08-25T01:18:52-04:00</updated>
    <content type="html">&lt;p&gt;I recently released &lt;code&gt;hitch&lt;/code&gt; 0.6, a complete &lt;a href=&quot;http://github.com/therubymug/hitch/tree/master&quot;&gt;rewrite&lt;/a&gt; of the original &lt;code&gt;hitch&lt;/code&gt;. We now have a test suite! :-) &lt;code&gt;hitch&lt;/code&gt; is a Git author attribution helper for pair programmers. It will modify your git author name and email to reflect who you are pairing with.&lt;/p&gt;
&lt;h1&gt;The itch we&amp;#8217;re scratching&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;http://blog.leshill.org&quot;&gt;Les Hill&lt;/a&gt; originally wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pair programming does present some unique problems, one that we encountered at &lt;a href=&quot;http://www.hashrocket.com&quot;&gt;Hashrocket&lt;/a&gt; was commit attribution: a commit message would be identified with one member of the pair only.  This is not exactly tragic, but from the perspective of a passionate developer, having commit credit (and accountability) is a critical and visible part of the ethos.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tpope.net&quot;&gt;Tim Pope&lt;/a&gt; had the brilliant idea of using a group email address with tags (such as &lt;em&gt;group+you@example.com&lt;/em&gt;) to identify the commits a pair made to git.  A little &lt;em&gt;bash script fu&lt;/em&gt; lead to a nifty command line utility that let us track pairs with our git commits.  With that script as a starting point, &lt;a href=&quot;http://blog.therubymug.com&quot;&gt;Ro Samour&lt;/a&gt; wrote a pure ruby implementation: &lt;code&gt;hitch&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is what a typical &lt;code&gt;hitch&lt;/code&gt; commit message looks like in your terminal:&lt;/p&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;commit e518dd0637e7d1d77d3bd79a645e5d0bc93eae2d
Author: Philip J. Fry and Turanga Leela &amp;lt;planex+fry+leela@example.com&amp;gt;
Commit: Bender Pairing Station &amp;lt;bender@example.com&amp;gt;

    Fix infite loop in empathy chip&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;This is a commit message from &lt;code&gt;hitch&lt;/code&gt; on github:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/images/github_commit.png&quot; title=&quot;Github hitch commit message&quot; alt=&quot;Github hitch commit message&quot; /&gt;&lt;/p&gt;
&lt;h1&gt;Getting started&lt;/h1&gt;
&lt;p&gt;You will need to install the &lt;code&gt;hitch&lt;/code&gt; gem:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;% gem install hitch&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or rvm users should copy and paste the following into your terminal:&lt;/p&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;for x in $(rvm list strings)&lt;tt&gt;
&lt;/tt&gt;do&lt;tt&gt;
&lt;/tt&gt;  rvm use $x@global &amp;amp;&amp;amp; gem install hitch&lt;tt&gt;
&lt;/tt&gt;done&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Then you will need to add a shell function to your .bashrc or .zshrc:&lt;/p&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;hitch() {&lt;tt&gt;
&lt;/tt&gt;  command hitch &amp;quot;$@&amp;quot;&lt;tt&gt;
&lt;/tt&gt;  if [[ -s &amp;quot;$HOME/.hitch_export_authors&amp;quot; ]]; then&lt;tt&gt;
&lt;/tt&gt;    source &amp;quot;$HOME/.hitch_export_authors&amp;quot;&lt;tt&gt;
&lt;/tt&gt;  fi&lt;tt&gt;
&lt;/tt&gt;}&lt;tt&gt;
&lt;/tt&gt;alias unhitch='hitch -u'&lt;tt&gt;
&lt;/tt&gt;# Uncomment to persist pair info between terminal instances&lt;tt&gt;
&lt;/tt&gt;# hitch&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Alternatively, you can also run the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;% hitch --setup &amp;gt;&amp;gt; ~/.bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;rvm users&lt;/strong&gt;: (that should be everyone ;-) You should add the shell commands from above &lt;em&gt;after&lt;/em&gt; you source the rvm scripts.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Once that&amp;#8217;s done, source the ~/.bashrc or open a new terminal and you&amp;#8217;re good to go.&lt;/em&gt;&lt;/p&gt;
&lt;h1&gt;The Group Email&lt;/h1&gt;
&lt;p&gt;You will need a group email account with a service such as &lt;a href=&quot;http://mail.google.com&quot;&gt;GMail&lt;/a&gt; or &lt;a href=&quot;http://www.google.com/apps/intl/en/business/index.html&quot;&gt;GoogleApps GMail&lt;/a&gt; that allows email tags&lt;sup class=&quot;footnote&quot; id=&quot;fnr1&quot;&gt;&lt;a href=&quot;#fn1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; (as an example, &lt;code&gt;twitter&lt;/code&gt; is a tag in this email address &lt;em&gt;bender+twitter@example.com&lt;/em&gt; which is considered to be the same email address as &lt;em&gt;bender@example.com&lt;/em&gt;):&lt;/p&gt;
&lt;p&gt;At &lt;a href=&quot;http://www.hashrocket.com&quot;&gt;Hashrocket&lt;/a&gt;, we use a &lt;a href=&quot;http://gravatar.com&quot;&gt;Gravatar&lt;/a&gt; for our group email account so that the commits show the custom gravatar along with our commit messages. For every pair, we register a new gravatar and associate it with a tagged email address of the form:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;dev+github_user1+github_user2@example.com&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The github usernames should appear in the local part of the address in alphabetical order after the group address local part, each github username seperated by a &lt;code&gt;+&lt;/code&gt;.&lt;/p&gt;
&lt;h1&gt;Using &lt;code&gt;hitch&lt;/code&gt;&lt;/h1&gt;
&lt;p&gt;To pair with another developer whose github username is &lt;code&gt;pair&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;% hitch fry leela&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;hitch&lt;/code&gt; will prompt you if it does not recognize github username of your pair and save it for later use.&lt;/p&gt;
&lt;p&gt;To unpair and code solo:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;% hitch -u&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;% unhitch&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To see who you are currently paired with:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;% hitch&lt;/code&gt;&lt;/pre&gt;
&lt;p class=&quot;footnote&quot; id=&quot;fn1&quot;&gt;&lt;a href=&quot;#fnr1&quot;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt; Read about email tags on &lt;a href=&quot;http://en.wikipedia.org/wiki/E-mail_address#Sub-addressing&quot;&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>The Install (Snow Leopard Edition)</title>
    <link rel="alternate" type="text/html" href="http://blog.therubymug.com/blog/2010/05/20/the-install-osx.html" />
    
    <id>tag:blog.therubymug.com,2010-05-20:1274385077</id>
    
    <published>2010-05-20T15:51:17-04:00</published>
    <updated>2010-05-20T15:51:17-04:00</updated>
    <content type="html">&lt;p&gt;&lt;code&gt;update 2011-07-26&lt;/code&gt;: The Install (Lion Edition) can be found &lt;a href=&quot;http://blog.therubymug.com/blog/2011/07/26/the-install-osx-lion.html&quot;&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Long story short&lt;/h3&gt;
&lt;p&gt;The following are steps we take at &lt;a href=&quot;http://hashrocket.com&quot;&gt;Hashrocket&lt;/a&gt; when setting up a near perfect Ruby development environment in OS X (Snow Leopard)&lt;sup class=&quot;footnote&quot; id=&quot;fnr1&quot;&gt;&lt;a href=&quot;#fn1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;. Feel free to copy and paste the commands into your terminal.&lt;/p&gt;
&lt;h3&gt;A Word of Caution&lt;/h3&gt;
&lt;p&gt;While it is unlikely any instruction given below  might damage your system, it’s always a good idea to backup everything before doing any of it, just in case. I am not responsible for anything that may result from following the instructions below. Proceed at your own risk.&lt;/p&gt;
&lt;h3&gt;Step 0:&lt;/h3&gt;
&lt;p&gt;- &lt;a href=&quot;http://guide.macports.org/chunked/installing.macports.uninstalling.html&quot;&gt;Uninstall MacPorts!&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Prerequisite OS X Apps:&lt;/h3&gt;
&lt;p&gt;- &lt;a href=&quot;http://www.google.com/chrome&quot;&gt;Chrome&lt;/a&gt; (+ vimium, make default?)&lt;br /&gt;
- &lt;a href=&quot;http://www.getfirefox.com&quot;&gt;Firefox&lt;/a&gt; (+ firebug)&lt;br /&gt;
- &lt;a href=&quot;http://fluidapp.com/&quot;&gt;Fluid.app&lt;/a&gt;&lt;br /&gt;
- &lt;a href=&quot;http://gitx.frim.nl/&quot;&gt;Gitx&lt;/a&gt;&lt;br /&gt;
- &lt;a href=&quot;http://www.irradiatedsoftware.com/sizeup/&quot;&gt;SizeUp&lt;/a&gt;&lt;br /&gt;
- &lt;a href=&quot;http://www.abyssoft.com/software/teleport/&quot;&gt;Teleport&lt;/a&gt;&lt;br /&gt;
- &lt;a href=&quot;http://developer.apple.com/technologies/tools/xcode.html&quot;&gt;xCode&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Snow Leopard Samba Fix&lt;sup class=&quot;footnote&quot; id=&quot;fnr2&quot;&gt;&lt;a href=&quot;#fn2&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;echo &amp;quot;[default]&amp;quot; &amp;gt;  ~/Library/Preferences/nsmb.conf&lt;tt&gt;
&lt;/tt&gt;echo &amp;quot;streams=no&amp;quot; &amp;gt;&amp;gt; ~/Library/Preferences/nsmb.conf&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Remove system gems&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;sudo rm -r /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8&lt;tt&gt;
&lt;/tt&gt;sudo gem update --system&lt;tt&gt;
&lt;/tt&gt;sudo gem clean&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Install homebrew&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;sudo mkdir /usr/local&lt;tt&gt;
&lt;/tt&gt;sudo chown -R `whoami` /usr/local&lt;tt&gt;
&lt;/tt&gt;curl -L http://github.com/mxcl/homebrew/tarball/master | tar xz --strip 1 -C /usr/local&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Create .bash_profile&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; echo &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;. &amp;quot;$HOME/.bashrc&amp;quot;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt; &amp;gt; ~&lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.bash_profile&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Install MacVim&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; brew install macvim&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Install utilities&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; brew install wget proctools ack ctags-exuberant markdown&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Get git&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; brew install git&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;dotfiles, dev folder&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;mkdir ~/hashrocket&lt;tt&gt;
&lt;/tt&gt;cd ~/hashrocket&lt;tt&gt;
&lt;/tt&gt;git clone http://github.com/hashrocket/dotmatrix.git&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;ln -s ~/hashrocket/dotmatrix/.bashrc ~/&lt;tt&gt;
&lt;/tt&gt;ln -s ~/hashrocket/dotmatrix/.hashrc ~/&lt;tt&gt;
&lt;/tt&gt;ln -s ~/hashrocket/dotmatrix/.vim ~/&lt;tt&gt;
&lt;/tt&gt;ln -s ~/hashrocket/dotmatrix/.vimrc ~/&lt;tt&gt;
&lt;/tt&gt;sh ~/hashrocket/dotmatrix/bin/vimbundles.sh&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Install &lt;a href=&quot;http://rvm.beginrescueend.com/rvm/install/&quot;&gt;rvm&lt;/a&gt;&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;12&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;mkdir -p ~/.rvm/src/ &amp;amp;&amp;amp; \&lt;tt&gt;
&lt;/tt&gt;  cd ~/.rvm/src &amp;amp;&amp;amp; \&lt;tt&gt;
&lt;/tt&gt;  rm -rf ./rvm/ &amp;amp;&amp;amp; \&lt;tt&gt;
&lt;/tt&gt;  git clone --depth 1 git://github.com/wayneeseguin/rvm.git &amp;amp;&amp;amp; \&lt;tt&gt;
&lt;/tt&gt;  cd rvm &amp;amp;&amp;amp; \&lt;tt&gt;
&lt;/tt&gt;  ./install&lt;tt&gt;
&lt;/tt&gt;echo 'if [[ -s &amp;quot;$HOME/.rvm/scripts/rvm&amp;quot; ]] ; then source &amp;quot;$HOME/.rvm/scripts/rvm&amp;quot; ; fi' \&lt;tt&gt;
&lt;/tt&gt;       &amp;gt;&amp;gt; ~/.bashrc.local&lt;tt&gt;
&lt;/tt&gt;echo 'rvm_project_rvmrc_default=1' \&lt;tt&gt;
&lt;/tt&gt;  &amp;gt; ~/.rvmrc # Use default gemset when leaving a .rvmrc project dir&lt;tt&gt;
&lt;/tt&gt;echo '[[ -r $rvm_path/scripts/completion ]] &amp;amp;&amp;amp; source $rvm_path/scripts/completion' \&lt;tt&gt;
&lt;/tt&gt;       &amp;gt;&amp;gt; ~/.bashrc.local # rvm autocompletion&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Install openssl&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; rvm package install openssl&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Install the rubies to your heart&amp;#8217;s content&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;rvm install ree -C --enable-shared=yes&lt;tt&gt;
&lt;/tt&gt;rvm install 1.8.7 -C --enable-shared=yes&lt;tt&gt;
&lt;/tt&gt;rvm install 1.9.2 -C --enable-shared=yes&lt;tt&gt;
&lt;/tt&gt;rvm use 1.8.7 --default&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Setup your .gemrc&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;echo -e '---&lt;tt&gt;
&lt;/tt&gt;:benchmark: false&lt;tt&gt;
&lt;/tt&gt;gem: --no-ri --no-rdoc&lt;tt&gt;
&lt;/tt&gt;:update_sources: true&lt;tt&gt;
&lt;/tt&gt;:bulk_threshold: 1000&lt;tt&gt;
&lt;/tt&gt;:verbose: true&lt;tt&gt;
&lt;/tt&gt;:sources:&lt;tt&gt;
&lt;/tt&gt;- http://rubygems.org&lt;tt&gt;
&lt;/tt&gt;- http://gems.github.com&lt;tt&gt;
&lt;/tt&gt;:backtrace: false' &amp;gt; ~/.gemrc&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;MySQL&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; brew install mysql &lt;span class=&quot;c&quot;&gt;# Follow instructions&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Postgresql&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; brew install postgresql &lt;span class=&quot;c&quot;&gt;# Follow instructions&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;If you get the following error:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;FATAL:  could not create shared memory segment: Cannot allocate memory&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Run this in your terminal window and try the &lt;code&gt;initdb&lt;/code&gt; command again.&lt;sup class=&quot;footnote&quot; id=&quot;fnr3&quot;&gt;&lt;a href=&quot;#fn3&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;sudo sysctl -w kern.sysv.shmall=65536&lt;tt&gt;
&lt;/tt&gt;sudo sysctl -w kern.sysv.shmmax=16777216&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Install &lt;em&gt;global&lt;/em&gt; gems&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;for x in $(rvm list strings)&lt;tt&gt;
&lt;/tt&gt;do&lt;tt&gt;
&lt;/tt&gt;  # Uncomment the next 4 lines to install mysql, pg, &amp;amp; mongrel&lt;tt&gt;
&lt;/tt&gt;  # rvm use $x@global &amp;amp;&amp;amp; gem install mysql --\&lt;tt&gt;
&lt;/tt&gt;  #  --with-mysql-dir=/usr/local \&lt;tt&gt;
&lt;/tt&gt;  #  --with-mysql-config=/usr/local/bin/mysql_config&lt;tt&gt;
&lt;/tt&gt;  # rvm use $x@global &amp;amp;&amp;amp; gem install mongrel pg&lt;tt&gt;
&lt;/tt&gt;  rvm use $x@global &amp;amp;&amp;amp; gem install open_gem ruby-debug hitch&lt;tt&gt;
&lt;/tt&gt;done&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;RubyCocoa (for rspactor)&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;mkdir -p /usr/local/src&lt;tt&gt;
&lt;/tt&gt;cd /usr/local/src&lt;tt&gt;
&lt;/tt&gt;wget http://sourceforge.net/projects/rubycocoa/files/RubyCocoa/1.0.0/RubyCocoa-1.0.0.tar.gz/download&lt;tt&gt;
&lt;/tt&gt;tar xzf RubyCocoa-1.0.0.tar.gz &amp;amp;&amp;amp; rm RubyCocoa-1.0.0.tar.gz &amp;amp;&amp;amp; cd RubyCocoa-1.0.0&lt;tt&gt;
&lt;/tt&gt;ruby install.rb config --build-universal=yes&lt;tt&gt;
&lt;/tt&gt;ruby install.rb setup&lt;tt&gt;
&lt;/tt&gt;# have to sudo to install this because the installer wants to copy example stuff out of the /System dir&lt;tt&gt;
&lt;/tt&gt;sudo ruby install.rb install&lt;tt&gt;
&lt;/tt&gt;sudo chown -R `whoami` /usr/local # For good measure&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Growl&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;12&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;cd ~/Downloads&lt;tt&gt;
&lt;/tt&gt;wget http://growl.cachefly.net/Growl-1.2.dmg&lt;tt&gt;
&lt;/tt&gt;open Growl-1.2.dmg&lt;tt&gt;
&lt;/tt&gt;cd /Volumes/Growl-1.2/Extras/growlnotify/&lt;tt&gt;
&lt;/tt&gt;# Don't use the install shell script&lt;tt&gt;
&lt;/tt&gt;# Use the following:&lt;tt&gt;
&lt;/tt&gt;mkdir -p /usr/local/bin&lt;tt&gt;
&lt;/tt&gt;echo &amp;quot;Creating /usr/local/bin&amp;quot;&lt;tt&gt;
&lt;/tt&gt;mkdir -p /usr/local/man/man1&lt;tt&gt;
&lt;/tt&gt;echo &amp;quot;Creating /usr/local/man/man1&amp;quot;&lt;tt&gt;
&lt;/tt&gt;cp growlnotify /usr/local/bin/growlnotify&lt;tt&gt;
&lt;/tt&gt;cp growlnotify.1 /usr/local/man/man1/growlnotify.1&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Generate a pubkey for that station&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;ssh-keygen -t rsa&lt;tt&gt;
&lt;/tt&gt;# Add public key to your github account&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p class=&quot;footnote&quot; id=&quot;fn1&quot;&gt;&lt;a href=&quot;#fnr1&quot;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt; It may work for Leopard… I just haven&amp;#8217;t tried it yet.&lt;/p&gt;
&lt;p class=&quot;footnote&quot; id=&quot;fn2&quot;&gt;&lt;a href=&quot;#fnr2&quot;&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;/a&gt; &lt;a href=&quot;http://support.apple.com/kb/HT4017&quot;&gt;More info&lt;/a&gt; (Thanks Alan Jones for the tip)&lt;/p&gt;
&lt;p class=&quot;footnote&quot; id=&quot;fn3&quot;&gt;&lt;a href=&quot;#fnr3&quot;&gt;&lt;sup&gt;3&lt;/sup&gt;&lt;/a&gt; &lt;a href=&quot;http://willbryant.net/software/mac_os_x/postgres_initdb_fatal_shared_memory_error_on_leopard&quot;&gt;Found this here&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>The Install (Debian Edition)</title>
    <link rel="alternate" type="text/html" href="http://blog.therubymug.com/blog/2010/05/20/the-install-debian.html" />
    
    <id>tag:blog.therubymug.com,2010-05-20:1274367077</id>
    
    <published>2010-05-20T10:51:17-04:00</published>
    <updated>2010-05-20T10:51:17-04:00</updated>
    <content type="html">&lt;h3&gt;Long story short&lt;/h3&gt;
&lt;p&gt;The following are steps we take at &lt;a href=&quot;http://hashrocket.com&quot;&gt;Hashrocket&lt;/a&gt; when setting up a near perfect Ruby development environment in GNU/Linux (Debian/Ubuntu). Feel free to copy and paste the commands into your terminal.&lt;/p&gt;
&lt;h3&gt;A Word of Caution&lt;/h3&gt;
&lt;p&gt;While it is unlikely any instruction given below  might damage your system, it’s always a good idea to backup everything before doing any of it, just in case. I am not responsible for anything that may result from following the instructions below. Proceed at your own risk.&lt;/p&gt;
&lt;h3&gt;Prerequisite Debian/Ubuntu Apps:&lt;/h3&gt;
&lt;p&gt;- &lt;a href=&quot;http://www.google.com/chrome&quot;&gt;Chrome&lt;/a&gt; (+ vimium, make default?)&lt;br /&gt;
- &lt;a href=&quot;http://www.getfirefox.com&quot;&gt;Firefox&lt;/a&gt; (+ firebug)&lt;/p&gt;
&lt;h3&gt;Install vim&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; sudo apt-get install vim-gnome&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Install utilities&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;sudo apt-get install curl bison build-essential zlib1g-dev libssl-dev libreadline5-dev libxml2-dev&lt;tt&gt;
&lt;/tt&gt;sudo apt-get install wget ack exuberant-ctags markdown gitk openssh-server&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;get git&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; sudo apt-get install git-core&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Install &lt;a href=&quot;http://rvm.beginrescueend.com/rvm/install/&quot;&gt;rvm&lt;/a&gt;&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;12&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;bash &amp;lt; &amp;lt;(curl -s https://rvm.beginrescueend.com/install/rvm)&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;echo 'if [[ -s &amp;quot;$HOME/.rvm/scripts/rvm&amp;quot; ]] ; then source &amp;quot;$HOME/.rvm/scripts/rvm&amp;quot; ; fi' \&lt;tt&gt;
&lt;/tt&gt;       &amp;gt;&amp;gt; ~/.bashrc.local&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;echo -e &amp;quot;export rvm_project_rvmrc_default=1&lt;tt&gt;
&lt;/tt&gt;export rvm_install_on_use_flag=1&lt;tt&gt;
&lt;/tt&gt;export rvm_project_rvmrc=1&lt;tt&gt;
&lt;/tt&gt;export rvm_path='$HOME/.rvm'&amp;quot; &amp;gt; ~/.rvmrc&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;echo '[[ -r $rvm_path/scripts/completion ]] &amp;amp;&amp;amp; source $rvm_path/scripts/completion' \&lt;tt&gt;
&lt;/tt&gt;       &amp;gt;&amp;gt; ~/.bashrc.local # rvm autocompletion&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Setup your &lt;em&gt;global&lt;/em&gt; gems&lt;/h3&gt;
A neat feature of rvm is defining the gems every &lt;em&gt;rvm-controlled&lt;/em&gt; ruby will install on its &lt;em&gt;global&lt;/em&gt; gemset. More &lt;a href=&quot;http://blog.therubymug.com/blog/2010/09/23/going-global-with-rvm-gemsets.html&quot;&gt;here&lt;/a&gt;
&lt;p&gt;Simply add your desired gems to the file: ~/.rvm/gemsets/global.gems like so:&lt;/p&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;rake -v0.9.2&lt;tt&gt;
&lt;/tt&gt;hitch&lt;tt&gt;
&lt;/tt&gt;dirty&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;Now&lt;/strong&gt; each time you &lt;code&gt;rvm install&lt;/code&gt; a ruby version, you&amp;#8217;ll have hitch, dirty and rake version 0.9.2!&lt;/p&gt;
&lt;h3&gt;Create your .gemrc by copying &amp;amp; pasting the following in your terminal:&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;echo -e '---&lt;tt&gt;
&lt;/tt&gt;:benchmark: false&lt;tt&gt;
&lt;/tt&gt;gem: --no-ri --no-rdoc&lt;tt&gt;
&lt;/tt&gt;:update_sources: true&lt;tt&gt;
&lt;/tt&gt;:bulk_threshold: 1000&lt;tt&gt;
&lt;/tt&gt;:verbose: true&lt;tt&gt;
&lt;/tt&gt;:sources:&lt;tt&gt;
&lt;/tt&gt;- http://rubygems.org&lt;tt&gt;
&lt;/tt&gt;:backtrace: false' &amp;gt; ~/.gemrc&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Install the rubies to your heart&amp;#8217;s content&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;rvm install 1.8.7&lt;tt&gt;
&lt;/tt&gt;rvm install 1.9.2&lt;tt&gt;
&lt;/tt&gt;rvm use 1.9.2 --default&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Install the Hashrocket dot files (don&amp;#8217;t worry, you can override your preferences)&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;mkdir ~/hashrocket&lt;tt&gt;
&lt;/tt&gt;cd ~/hashrocket&lt;tt&gt;
&lt;/tt&gt;git clone http://github.com/hashrocket/dotmatrix.git&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Symlink the good stuff!&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;ln -s ~/hashrocket/dotmatrix/.bashrc ~/&lt;tt&gt;
&lt;/tt&gt;ln -s ~/hashrocket/dotmatrix/.hashrc ~/&lt;tt&gt;
&lt;/tt&gt;ln -s ~/hashrocket/dotmatrix/.vim ~/&lt;tt&gt;
&lt;/tt&gt;ln -s ~/hashrocket/dotmatrix/.vimrc ~/&lt;tt&gt;
&lt;/tt&gt;sh ~/hashrocket/dotmatrix/bin/vimbundles.sh&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;Mongo&lt;/h3&gt;
&lt;p&gt;Follow &lt;a href=&quot;http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages&quot;&gt;these&lt;/a&gt; instructions&lt;/p&gt;
&lt;h3&gt;Postgresql (more in-depth install &lt;a href=&quot;http://blog.videntity.com/?p=523&quot;&gt;here&lt;/a&gt;)&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; sudo apt-get install postgresql-common postgresql-server-dev-&lt;span class=&quot;fl&quot;&gt;8.4&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Follow instructions&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;MySQL&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; sudo apt-get install mysql-common mysql-server-&lt;span class=&quot;fl&quot;&gt;5.1&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Follow instructions&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Generate a pubkey for that station&lt;/h3&gt;
&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td class=&quot;line_numbers&quot; title=&quot;click to toggle&quot; onclick=&quot;with (this.firstChild.style) { display = (display == '') ? 'none' : '' }&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre ondblclick=&quot;with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }&quot;&gt;ssh-keygen -t rsa&lt;tt&gt;
&lt;/tt&gt;# Add public key to your github account&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;h3&gt;&lt;em&gt;Enjoy&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;update&lt;/strong&gt;: [2011-08-23] rvm install process, other misc.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Engine Yard Cloud and Resque-Web</title>
    <link rel="alternate" type="text/html" href="http://blog.therubymug.com/blog/2010/04/20/engine-yard-cloud-and-resque-web.html" />
    
    <id>tag:blog.therubymug.com,2010-04-20:1271797996</id>
    
    <published>2010-04-20T17:13:16-04:00</published>
    <updated>2010-04-20T17:13:16-04:00</updated>
    <content type="html">&lt;p&gt;So at &lt;a href=&quot;http://hashrocket.com/&quot;&gt;Hashrocket&lt;/a&gt;, we&amp;#8217;ve been deploying a number of apps to Engine Yard Cloud. Some of these apps have required the use of background jobs. A library that facilitates that is called &lt;a href=&quot;http://github.com/defunkt/resque&quot;&gt;Resque&lt;/a&gt;. Once set up&lt;sup class=&quot;footnote&quot; id=&quot;fnr1&quot;&gt;&lt;a href=&quot;#fn1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, it has a Sinatra web app you can use to monitor the queue&amp;#8217;s progress. To make a long story short, it isn&amp;#8217;t trivial to setup Resque Web on Engine Yard Cloud. This is what we did to make it work:&lt;/p&gt;
&lt;h3&gt;In your environment.rb add the following line:&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;co&quot;&gt;Rails&lt;/span&gt;::&lt;span class=&quot;co&quot;&gt;Initializer&lt;/span&gt;.run &lt;span class=&quot;r&quot;&gt;do&lt;/span&gt; |config|
&lt;span class=&quot;no&quot;&gt;2&lt;/span&gt;   &lt;span class=&quot;c&quot;&gt;#[...]&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;3&lt;/span&gt;   config.middleware.use &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;ResqueWeb&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;Then create a library under RAILS_ROOT/lib/resque_web.rb with the following:&lt;/h3&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
  &lt;div class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;no&quot;&gt; 1&lt;/span&gt; require &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;sinatra/base&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt; 2&lt;/span&gt; &lt;span class=&quot;r&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;cl&quot;&gt;ResqueWeb&lt;/span&gt; &amp;lt; &lt;span class=&quot;co&quot;&gt;Sinatra&lt;/span&gt;::&lt;span class=&quot;co&quot;&gt;Base&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt; 3&lt;/span&gt;   require &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;resque/server&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt; 4&lt;/span&gt;   use &lt;span class=&quot;co&quot;&gt;Rack&lt;/span&gt;::&lt;span class=&quot;co&quot;&gt;ShowExceptions&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt; 5&lt;/span&gt;   &lt;span class=&quot;r&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;fu&quot;&gt;call&lt;/span&gt;(env)
&lt;span class=&quot;no&quot;&gt; 6&lt;/span&gt;     &lt;span class=&quot;r&quot;&gt;if&lt;/span&gt; env[&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;PATH_INFO&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;] =~ &lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;ch&quot;&gt;\/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;resque&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt; 7&lt;/span&gt;       env[&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;PATH_INFO&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;].sub!(&lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;^&lt;/span&gt;&lt;span class=&quot;ch&quot;&gt;\/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;resque&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;)
&lt;span class=&quot;no&quot;&gt; 8&lt;/span&gt;       env[&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;SCRIPT_NAME&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;] = &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;/resque&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt; 9&lt;/span&gt;       app = &lt;span class=&quot;co&quot;&gt;Resque&lt;/span&gt;::&lt;span class=&quot;co&quot;&gt;Server&lt;/span&gt;.new
&lt;span class=&quot;no&quot;&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/span&gt;       app.call(env)
&lt;span class=&quot;no&quot;&gt;11&lt;/span&gt;     &lt;span class=&quot;r&quot;&gt;else&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;12&lt;/span&gt;       &lt;span class=&quot;r&quot;&gt;super&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;13&lt;/span&gt;     &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;14&lt;/span&gt;   &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;15&lt;/span&gt; &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;That&amp;#8217;s it. Deploy your app to staging to test it and boom!&lt;/p&gt;
&lt;p class=&quot;footnote&quot; id=&quot;fn1&quot;&gt;&lt;a href=&quot;#fnr1&quot;&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/a&gt; This assumes you already have Resque installed in your EY Cloud app.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Hitch!</title>
    <link rel="alternate" type="text/html" href="http://blog.therubymug.com/blog/2009/04/20/hitch.html" />
    
    <id>tag:blog.therubymug.com,2009-04-20:1240261478</id>
    
    <published>2009-04-20T17:04:38-04:00</published>
    <updated>2009-04-20T17:04:38-04:00</updated>
    <content type="html">&lt;p&gt;At Hashrocket, we pair program all the time. In order to properly give credit to both programmers, we wrote a helper in the form of a gem. We called it &lt;a href=&quot;http://github.com/therubymug/hitch&quot;&gt;Hitch!&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;So how does it work?&lt;/h3&gt;
&lt;p&gt;In the spirit of staying DRY, I will direct you to Les Hill&amp;#8217;s blog post: &lt;a href=&quot;http://blog.leshill.org/blog/2009/04/20/pairing-with-hitch.html&quot;&gt;Pairing with Hitch&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Enjoy.&lt;/p&gt;</content>
  </entry>
  
</feed>
