<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Rajan Agaskar’s weblog.</description><title>agaskar.com</title><generator>Tumblr (3.0; @ragaskar)</generator><link>http://agaskar.com/</link><item><title>authlogic doesn't seem to like html multipart in tests</title><description>&lt;pre&gt;
      xhr :post, :create, { :item_id =&gt; @item.id.to_param, :Filedata =&gt; fixture_file_upload('images/sample1.jpg', 'image/jpeg') }, :html =&gt; { :multipart =&gt; true }
&lt;/pre&gt;

fails

&lt;pre&gt;
      xhr :post, :create, { :item_id =&gt; @item.id.to_param, :Filedata =&gt; fixture_file_upload('images/sample1.jpg', 'image/jpeg') }
&lt;/pre&gt;

succeeds.

&lt;p&gt;not going to track this one down, because my test was green without it. Maybe this is blowing away some important headers? …&lt;/p&gt;</description><link>http://agaskar.com/post/416412811</link><guid>http://agaskar.com/post/416412811</guid><pubDate>Sat, 27 Feb 2010 16:51:28 -0800</pubDate></item><item><title>Rails Routing Namespaces with Nested Routes can cause Model failures.</title><description>Working on my side project, I refactored some controllers into an admin namespace, resulting in a directory tree that looked something like this: 

&lt;pre&gt;
-controllers/
  -admin/
    -item/
      -photo_controller.rb
    -item_controller.rb
&lt;/pre&gt;

All the tests passed, yet whenever I hit my (previously working) admin/items controller, I got:

&lt;pre&gt;
NoMethodError (undefined method `find' for Admin::Item:Module):
  app/controllers/admin/items_controller.rb:7:in `index'
&lt;/pre&gt;

&lt;p&gt;
It looked like the route was somehow forcing the namespacing of the model. I went nuts googling for it and found zero explanations. Finally, on a hunch, I renamed the item directory to items and the photo_controller to Admin::Items::PhotoController instead of Admin::Item::PhotoController and everything worked. 
&lt;/p&gt;
&lt;p&gt;
Another option is to use ::Item in your controller instead of Item. I think I might go with this one — would rather be more specific than resort to naming tricks.
&lt;/p&gt;
&lt;p&gt;
I’m still bewildered as to how or why this is happening — I can’t quite see how having an Admin::Item:: namespace means that all of the sudden, Item will now refer to Admin::Item, although I do have a pet theory. Perhaps when Item is not found in the current namespace, it goes UP a namespace and eventually hits the model. Since I now have an Admin::Item, it doesn’t bother looking in the main namespace.
&lt;/p&gt;
&lt;p&gt;
I can’t believe this was so tough to google for. I imagine this would nail anyone who has a nested route in a namespace. I’m a bit surprised it’s not a more common error.
&lt;/p&gt;
&lt;p&gt;
I’m assuming tests didn’t fail because the Admin::Item::PhotosController was not loaded during the Admin::ItemsController test.
&lt;/p&gt;</description><link>http://agaskar.com/post/416224051</link><guid>http://agaskar.com/post/416224051</guid><pubDate>Sat, 27 Feb 2010 14:58:00 -0800</pubDate></item><item><title>Active Record DB Types: A Reference</title><description>&lt;p&gt;&lt;h3&gt;Native types:&lt;/h3&gt;


&lt;pre&gt;
add_column :native_type, :name, :options
&lt;/pre&gt;

&lt;pre&gt;
:primary_key 
:string 
:text
:integer 
:float
:decimal
:datetime
:timestamp 
:time 
:date 
:binary 
:boolean
&lt;/pre&gt;

&lt;h3&gt; Native Type Options:&lt;/h3&gt;
&lt;pre&gt;
:limit - Requests a maximum column length. This is number of characters for :string and :text columns and number of bytes for :binary and :integer columns.
:default - The column‘s default value. Use nil for NULL.
:null - Allows or disallows NULL values in the column. This option could have been named :null_allowed.
:precision - Specifies the precision for a :decimal column.
:scale - Specifies the scale for a :decimal column.
&lt;/pre&gt;

&lt;h3&gt;Table definitions:&lt;/h3&gt;

&lt;pre&gt;
  create_table :products do |t|
    t.integer :shop_id, :creator_id
    t.string  :name, :value, :default =%gt; "Untitled"
    t.timestamps
  end
&lt;/pre&gt;

You can use any native type, or the following helpers.&lt;br/&gt;&lt;h3&gt;timestamps&lt;/h3&gt;
adds created_at and updated_at timestamp columns to your table.

&lt;pre&gt;
...
t.timestamps
...
&lt;/pre&gt;

&lt;h3&gt;references&lt;/h3&gt;
Adds the integer field “#{name}_id”. Also adds the string field “#{name}_type” if polymorphic is true. You can pass a hash to polymorphic and specify a default if desired.
 
&lt;pre&gt;
create_table :taggings do |t|
    t.references :tag
    t.references :tagger, :polymorphic =&gt; true
    t.references :taggable, :polymorphic =&gt; { :default =&gt; 'Photo' }
  end
&lt;/pre&gt;

&lt;h3&gt;Auto-generate an add_column migration&lt;/h3&gt;
There is a special syntactic shortcut to generate migrations that add fields to a table.
&lt;pre&gt;
 script/generate migration add_fieldname_to_tablename fieldname:string
&lt;/pre&gt;&lt;/p&gt;</description><link>http://agaskar.com/post/401077990</link><guid>http://agaskar.com/post/401077990</guid><pubDate>Sat, 20 Feb 2010 12:34:00 -0800</pubDate></item><item><title>has_many :through, accepts_nested_attributes_for, and validations</title><description>&lt;p&gt;I had a need to write some code that would permit the following: 

&lt;pre&gt;
it "accepts attributes for item_photos" do
    photo = Factory(:photo)
    item = Item.create!(Factory.attributes_for(:item, :item_photos_attributes =&gt; [{:photo_id =&gt; photo.id}]))
    item.item_photos.should have(1).item_photo
    item.photos.first.should == photo
end
&lt;/pre&gt;

Basically, you can use nested attributes to when creating items to create lookup records for existing photos. 

Of course, the create kept failing due to the item_photo in question missing an item (well, actually … I started with a create, which of course happily continued on its way until I tried to look at item photos and it was blank. The lesson is that you should ALWAYS test that your create or saves have occured, either with a should be_true or a bang method so they explode). 

This blew my mind — how does accept_nested_attributes_for even work if you need to have an id before saving child associations? Well, it was my fault, of course. My item_photos model looked like this: 

&lt;pre&gt;
class ItemPhoto &lt; ActiveRecord::Base
  belongs_to :item
  belongs_to :photo

  validates_presence_of :item
  validates_presence_of :photo
end
&lt;/pre&gt;

I added the validations because I believed it would be silly to have an item_photo without an associated item or photo. What would you do with such a thing? Of course, my overzealous validating meant my accept_nested_attributes could never hope to succeed. 

Removing these validations made the test pass happily.  Basically, this seems to indicate that Rails can’t yet handle validations on parent belongs_to associations in children yet, so you’re probably going to have to skip them. It sounds like this is possibly going to make it into a future version of rails, but if not, there you have it: a simple solution for a foolish problem that is *really* hard to google for.&lt;/p&gt;</description><link>http://agaskar.com/post/396150446</link><guid>http://agaskar.com/post/396150446</guid><pubDate>Wed, 17 Feb 2010 22:23:00 -0800</pubDate></item><item><title>Fun (and evil) tricks with rspec</title><description>&lt;p&gt;&lt;pre&gt;
      original_glob = Dir.method(:glob)
      Dir.stub!(:glob).and_return do |glob_string|
        if glob_string =~ /public/
          glob_string
        else
          original_glob.call(glob_string)
        end
      end
&lt;/pre&gt;

Of course, you shouldn’t do this because return blocks on stubs (calculated return blocks) are evil.

Still fun, though.&lt;/p&gt;</description><link>http://agaskar.com/post/355625717</link><guid>http://agaskar.com/post/355625717</guid><pubDate>Tue, 26 Jan 2010 21:16:17 -0800</pubDate></item><item><title>JSON.stringify bug with Native FF Implementation</title><description>&lt;p&gt;Firefox past 3.5.4 natively implements JSON.stringify with replacers, similarly to the way JSON2 works. However, it’s doing something wrong (optimization related?). Supposedly, you can pass stringify a replacer function as a second argument and it will use whatever is returned from that argument as the value in the serialized copy. HOWEVER, if you pass a value back that contains the same values (but is not === to) the original value, the JSON.stringify uses the original value instead. This sucks for me, because I want to pass back an array with the toJSON method wiped, without destroying the (incorrectly implemented by Prototype) toJSON method on the original.

Here’s a jasmine spec: 

&lt;pre&gt;
function json2PrototypeFix(key, value) {
  if (typeof this[key] == 'object' &amp;&amp; Object.prototype.toString.apply(this[key]) === '[object Array]') {
    var copy = this[key].slice(0);
    this[key] = [1];
     return copy;
  } else {
    return value
  }

}
describe('JSON with protoype', function () {

 it('should properly stringify an object with child arrays', function() {
    var array = [1,2];
    var obj = {"foo": array};
    var result = JSON.stringify(obj, json2PrototypeFix);
    expect(result).toEqual("{\"foo\":[1,2]}");
  });
});
&lt;/pre&gt;

The failure I get here is 

&lt;pre&gt;Expected '{"foo":"[1]"}' to equal '{"foo":[1,2]}'.&lt;/pre&gt; 

which implies I’m using the original value, even though I passed back the copy I made of it.

If I allow Crockford’s original JSON2 to overwrite the stringify function, then everything works as expected. 

This is super frustrating — both Prototype AND Firefox are broken in this case, so I can’t reliably fix the parts of Jasmine that need JSON.stringify to work correctly when Prototype is present. I think I’m just going to check for the presence of prototype and then just use their toJSON, instead of fixing the issue using JSON2’s replacer support (which isn’t going to be present everywhere anyways — sounds like it’ll break in browsers that implement JSON.stringify without the replacer arg; ie FF&lt;/p&gt;</description><link>http://agaskar.com/post/349461220</link><guid>http://agaskar.com/post/349461220</guid><pubDate>Sat, 23 Jan 2010 12:25:31 -0800</pubDate></item><item><title>Tracking a remote fork locally with Git</title><description>&lt;p&gt;&lt;pre&gt;
git add remote SomeRemote git://github.com/SomeRemote/some-project.git
git fetch SomeRemote
git branch --track SomeRemote SomeRemote/master
git checkout SomeRemote
&lt;/pre&gt;

Now you’ve got a local branch (named after the user who created it) that is tracking changes to that repo. Meaning if you &lt;pre&gt;git pull&lt;/pre&gt; in there, you’ll get their latest changes. If you’ve got someone you frequently collaborate with who makes changes to their own fork, this is super handy.&lt;/p&gt;</description><link>http://agaskar.com/post/308834562</link><guid>http://agaskar.com/post/308834562</guid><pubDate>Wed, 30 Dec 2009 17:46:23 -0800</pubDate></item><item><title>"First, you need to include the library and create a new instance using the new2 method (or new with..."</title><description>“First, you need to include the library and create a new instance using the new2 method (or new with a lot of parameters or new3 with a hash of every parameter needed; it’s sort of up to you).”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;p&gt;according to this &lt;a href="http://www.slideshare.net/knoppix/ruby-tutorial"&gt;Ruby tutorial slideshow transcription&lt;/a&gt;, these are the basic differences between new, new2, and new3 constructors for xmlrpc. Can I take a moment to salute the careful consideration that was given to these names? [1]&lt;/p&gt;

&lt;p&gt;[1] Yes, I am using my middle finger here.&lt;/p&gt;&lt;/em&gt;</description><link>http://agaskar.com/post/285414276</link><guid>http://agaskar.com/post/285414276</guid><pubDate>Tue, 15 Dec 2009 17:42:24 -0800</pubDate></item><item><title>"if ENV[‘RAILS_ENV’] == ‘production’
ENV[‘GEM_PATH’] =..."</title><description>“&lt;p&gt;if ENV[‘RAILS_ENV’] == ‘production’&lt;br/&gt;
ENV[‘GEM_PATH’] = ‘/home/USERNAME/.gems’&lt;br/&gt;
require ‘/home/USERNAME/.gems/gems/rack-1.0.0/lib/rack.rb’&lt;br/&gt;
end&lt;/p&gt;

&lt;p&gt;is apparently the crap you have to add to get the correct version of rack on dreamhost. Really? That seems like a pain in the ass.&lt;/p&gt;”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://www.42.mach7x.com/2009/08/24/rubygem-version-error-rack0-3-0-not-1-0-0/"&gt;RubyGem version error: rack(0.3.0 not ~&gt; 1.0.0) » 42&lt;/a&gt;&lt;/em&gt;</description><link>http://agaskar.com/post/278601316</link><guid>http://agaskar.com/post/278601316</guid><pubDate>Thu, 10 Dec 2009 22:10:59 -0800</pubDate></item><item><title>rspec, errors, and idiocy</title><description>&lt;p&gt;Just spent ten minutes writing a test that should’ve taken thirty seconds. The final test looks like this: 

&lt;pre&gt;
it "should throw an Already Running error if there is already a server running" do
    some_thing.should_receive(:some_method).and_raise(RuntimeError.new('no error'))
    lambda {
      some_thing.that_triggers_the_error()
      }.should raise_error(RuntimeError, "some error")
end
&lt;/pre&gt;

The first mistake was mine. I wrote: 

&lt;pre&gt;
some_thing.should_receive(:some_method).and_throw(RuntimeError.new('some error'))
&lt;/pre&gt;

Too much javascript, I guess. But the crazy thing is, yes, it throws. You end up getting a NameError: uncaught throw for ‘some error”. Super confusing, right? Easy mistake to make, though. 

The second issue is more of an rspec message shortcoming. I originally had: 

&lt;pre&gt;
 .should raise_error(RuntimeError.new('some error'))
&lt;/pre&gt;

which resulted in the matcher error: 

&lt;pre&gt;
expected some error but nothing was raised 
&lt;/pre&gt;

But something *was* raised — it just wasn’t being matched correctly because I used the wrong matcher arguments. This is, yes, technically also my fault, but the unhelpful matcher error makes it difficult to catch. 

Anyways, hopefully this gotcha description finds its way into the hands of people who need it, since google wasn’t super helpful when I dropped in some key words.&lt;/p&gt;</description><link>http://agaskar.com/post/229028346</link><guid>http://agaskar.com/post/229028346</guid><pubDate>Sat, 31 Oct 2009 10:45:00 -0700</pubDate></item><item><title>Old News about Icons » UIE Brain Sparks</title><description>&lt;a href="http://www.uie.com/brainsparks/2009/06/28/old-news-about-icons/"&gt;Old News about Icons » UIE Brain Sparks&lt;/a&gt;: &lt;p&gt;Ran across this interesting advice on Icons vs. Text while flipping through the Google Popular articles that now sits on the google reader login page (which, by the way, is a great feature! I find myself going through these every once in awhile — keeps me fresh on the memes of the day). &lt;/p&gt;

&lt;p&gt;It’s short, but the gist? “Text + image works better than just image or just text. However, just text works better than just image.” Also: don’t move icons around and don’t make icons for concepts that are difficult to iconize.&lt;/p&gt;</description><link>http://agaskar.com/post/133880702</link><guid>http://agaskar.com/post/133880702</guid><pubDate>Wed, 01 Jul 2009 19:48:14 -0700</pubDate></item><item><title>GRUB error 17 ( Debian/Ubuntu ) « Just a thought</title><description>&lt;a href="http://stringofthoughts.wordpress.com/2009/05/24/grub-error-17-debianubuntu/"&gt;GRUB error 17 ( Debian/Ubuntu ) « Just a thought&lt;/a&gt;: &lt;p&gt;With the help of this link I was able to make the necessary changes in order to boot after the Error 17 caused by blowing away my Kubuntu partition with gparted.&lt;/p&gt;</description><link>http://agaskar.com/post/125581746</link><guid>http://agaskar.com/post/125581746</guid><pubDate>Wed, 17 Jun 2009 19:50:44 -0700</pubDate></item><item><title>OSX Style Keymap: Swapping WIN and ALT keys on Ubuntu to act as ALT and META keys (respectively) </title><description>&lt;p&gt;I’m 100% lost without the Rubymine keymap for OS X.  (Not ‘Default for OS X’, but ‘OS X’). This is available on the Ubuntu version, however, my keymap out of the box was not supported. By default, my left ALT key sends ‘left ALT’, and my Win key sends ‘Win’ (which, yes, is pretty sensible). I wanted my left ALT key to send ‘Meta’ (essentially ‘Command’), and my left Win key to send ALT. After tweaking with xmodmap for about an hour, I finally came up with an .Xmodmap file that does what I want (just drop this in your user dir — note the case-sensitivity — and Ubuntu should prompt you to load it automatically next time you login): &lt;/p&gt;

&lt;p&gt;clear mod1&lt;br/&gt;
clear mod4&lt;br/&gt;
keycode 133 = Alt_L&lt;br/&gt;
keycode 64 = Meta_L&lt;br/&gt;
add mod1 = Alt_L &lt;br/&gt;
add mod4 = Meta_L &lt;/p&gt;

&lt;p&gt;&lt;br/&gt;
I probably need to remap all the keys to be more mac-y (IE, copy on META+C, instead of CTRL + C), but at least the Rubymine keymap seems to be acting mostly as I’d expect.&lt;/p&gt;</description><link>http://agaskar.com/post/123743785</link><guid>http://agaskar.com/post/123743785</guid><pubDate>Sun, 14 Jun 2009 21:01:33 -0700</pubDate></item><item><title>"Have you checked in the current profile of gnome-terminal the option “Run command as a login..."</title><description>“Have you checked in the current profile of gnome-terminal the option “Run command as a login shell” ? If this is not enabled, I think ~/.bash_profile is not loaded.”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;how to get .bash_profile sourced when launching Terminal in Ubuntu: &lt;a href="https://answers.launchpad.net/ubuntu/+question/1770"&gt;Ubuntu question #1770: “configure the .bash_profile”&lt;/a&gt;&lt;/em&gt;</description><link>http://agaskar.com/post/123600436</link><guid>http://agaskar.com/post/123600436</guid><pubDate>Sun, 14 Jun 2009 15:44:43 -0700</pubDate></item><item><title>awesome git plugin gotcha</title><description>&lt;p&gt;1. (apparently) git considers any directory with a .git file in it as a submodule.&lt;br/&gt;
2. the restful_authentication recommends cloning instead of using script/plugin (which removes the .git file) because of naming issues.&lt;br/&gt;
3. capistrano does not appear to pull git submodules by defaul&lt;/p&gt;

&lt;p&gt;1 + 2 + 3 = tests pass on local, but production can’t run (because the plugin code doesn’t deploy).&lt;/p&gt;

&lt;p&gt;fun.  &lt;/p&gt;

&lt;p&gt;&lt;b&gt;update&lt;/b&gt;: of course, the obvs fix is to remove the .git file, then redeploy. Git doesn’t like to rm submodules, so I had to rm -rf the dir, then git rm it, then grab a copy without a .git file and add it.&lt;/p&gt;</description><link>http://agaskar.com/post/122996345</link><guid>http://agaskar.com/post/122996345</guid><pubDate>Sat, 13 Jun 2009 11:20:00 -0700</pubDate></item><item><title>rspec w/ frozen rails </title><description>&lt;p&gt;Getting this error on all your controller tests? &lt;/p&gt;

&lt;p&gt;ArgumentError in ‘Controller::TestCase should destroy user’&lt;br/&gt;
wrong number of arguments (0 for 1)&lt;/p&gt;

&lt;p&gt;Possibly an impedance mismatch between some gem and the frozen version of rails. Either way, upgrading to 2.3.2 in my vendor/rails fixed it for me. But man, was that ever hard to figure out.&lt;/p&gt;</description><link>http://agaskar.com/post/122942504</link><guid>http://agaskar.com/post/122942504</guid><pubDate>Sat, 13 Jun 2009 09:08:20 -0700</pubDate></item><item><title>could not find any SCM named git</title><description>&lt;p&gt;Capistrano deploy problems.&lt;/p&gt;

&lt;p&gt;Happened to me.&lt;/p&gt;

&lt;p&gt;Here’s the story.&lt;/p&gt;

&lt;p&gt;1) you probably don’t have the correct keys on your target machine to git pull from your git repo. Make sure you can do a git pull where you’re deploying to.&lt;/p&gt;

&lt;p&gt;2) scm_command and scm settings seem to get called as methods. If they’re set to anything but ‘git’ (like, a full path), you’re probably screwed. &lt;/p&gt;

&lt;p&gt;3) Make sure you have the latest version of Capistrano installed.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;update:&lt;/b&gt; :copy is SUPER slow for me (tried to SFTP to dreamhost, canceled after 8M took 30 minutes to upload). :remote_cache copies from gitosis quickly and easily (under 10 seconds). Not sure why the diff.&lt;/p&gt;</description><link>http://agaskar.com/post/122728827</link><guid>http://agaskar.com/post/122728827</guid><pubDate>Fri, 12 Jun 2009 21:52:00 -0700</pubDate></item><item><title>Gitosis - DreamHost</title><description>&lt;a href="http://wiki.dreamhost.com/Gitosis"&gt;Gitosis - DreamHost&lt;/a&gt;: &lt;p&gt;Good instructions for setting up a git repo (with Gitosis) on Dreamhost. Not a fan of Dreamhost at all for hosting, but it’s occasionally suitable for side-project, non-critical repos. Except, of course, when my load is over 200 — which it has been more than once — and my repo commits (not surprisingly) time out. Still, for $9 a year*, it’s significantly cheaper than github (although github has some wonderful value-adds).   &lt;/p&gt;

&lt;p&gt;* $9 a year price requires some quasi-ethical shifting about of accounts and some administrative cost, as that’s an introductory price tied to your credit card number, email and username. Formally you are not allowed to re-host domains on more than DH account, although I’ve heard tell this is possible. I mainly use DH for repo storage and a tiny bit of staging/test/demo, and have not dealt with this problem.&lt;/p&gt;</description><link>http://agaskar.com/post/121779445</link><guid>http://agaskar.com/post/121779445</guid><pubDate>Thu, 11 Jun 2009 07:30:20 -0700</pubDate></item><item><title>See Jeff Run: xclip: A Cut-and-Paste Aid</title><description>&lt;a href="http://seejeffrun.blogspot.com/2008/04/xclip-cut-and-paste-aid.html"&gt;See Jeff Run: xclip: A Cut-and-Paste Aid&lt;/a&gt;: &lt;p&gt;Handy utility I saw a co-worker use the other day: &lt;/p&gt;

&lt;p&gt;pipe to pbcopy to get output from shell in the paste buffer on OSX, pipe to xsel to get output from shell in the paste buffer on linux.&lt;/p&gt;

&lt;p&gt;(pbpaste also does what you would expect.)&lt;/p&gt;</description><link>http://agaskar.com/post/121776513</link><guid>http://agaskar.com/post/121776513</guid><pubDate>Thu, 11 Jun 2009 07:23:00 -0700</pubDate></item><item><title>Decent setup instructions for a ROR stack on Ubuntu</title><description>&lt;a href="https://help.ubuntu.com/community/RubyOnRails#Get%20Ruby"&gt;Decent setup instructions for a ROR stack on Ubuntu&lt;/a&gt;: &lt;p&gt;All you really need to know here is the magic apt-get string, which is 

&lt;pre&gt;
sudo apt-get install ruby-full build-essential
&lt;/pre&gt;

As of this writing, the ruby that comes with ruby-full is the latest build of 1.8.7. 

If you follow their instructions for installing rubygems, skip to the last paragraph and use 

&lt;pre&gt;
wget &lt;a href="http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz"&gt;http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz&lt;/a&gt;
tar xzvf rubygems-1.3.1.tgz
cd rubygems-1.3.1
sudo ruby setup.rb
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
sudo gem update --system
&lt;/pre&gt;

If you accidentally install an older version of rubygems  (ie anything less than 1.3), you need to: 

&lt;pre&gt;
sudo gem install update-rubygems
&lt;/pre&gt;

restart shell (in some cases) and

&lt;pre&gt;
sudo ruby update_rubygems
&lt;/pre&gt;&lt;/p&gt;</description><link>http://agaskar.com/post/121595058</link><guid>http://agaskar.com/post/121595058</guid><pubDate>Wed, 10 Jun 2009 22:25:00 -0700</pubDate></item></channel></rss>
