<?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>The nokogiri install locally magic.</title><description>&lt;p&gt;If you’re building your own libxslt and libxml2 because you’re on shared hosting, the *right* gem install magic is :&lt;/p&gt;

&lt;p&gt; gem install nokogiri — —with-xml2-lib=&lt;YOUR_INSTALL_DIR&gt;/lib —with-xml2-include=&lt;YOUR_INSTALL_DIR&gt;/include/libxml2  —with-xslt-lib=&lt;YOUR_INSTALL_DIR&gt;/lib —with-xslt-include=&lt;YOUR_INSTALL_DIR&gt;/include/&lt;/p&gt;

&lt;p&gt;You should be ./configure —prefix=&lt;YOUR_INSTALL_DIR&gt; when you compile libxml2 and libxslt. &lt;/p&gt;

&lt;p&gt;The docs recommend &lt;/p&gt;

&lt;p&gt;gem install nokogiri — —with-xml2-lib=/home/joe/builds/lib \&lt;br/&gt;
                        —with-xml2-include=/home/joe/builds/include/libxml2 \&lt;br/&gt;
                        —with-xslt-lib=/home/joe/builds/lib \&lt;br/&gt;
                        —with-xslt-include=/home/joe/builds/include/libxslt&lt;/p&gt;

&lt;p&gt;This is close, but not close enough if you’re not used to compiling your own libraries. Taking a peek at mkmf.log is pretty helpful here too. Good luck!!!!&lt;/p&gt;</description><link>http://agaskar.com/post/910180937</link><guid>http://agaskar.com/post/910180937</guid><pubDate>Thu, 05 Aug 2010 18:09:00 -0700</pubDate></item><item><title>"Commands to take advantage of bash’s Emacs Mode:
ctrl-a	Move cursor to beginning of..."</title><description>“Commands to take advantage of bash’s Emacs Mode:&lt;br/&gt;
ctrl-a	Move cursor to beginning of line&lt;br/&gt;
ctrl-e	Move cursor to end of line&lt;br/&gt;
meta-b	Move cursor back one word&lt;br/&gt;
meta-f	Move cursor forward one word&lt;br/&gt;
ctrl-w	Cut the last word&lt;br/&gt;
ctrl-u	Cut everything before the cursor &lt;br/&gt;
ctrl-k	Cut everything after the cursor&lt;br/&gt;
ctrl-y	Paste the last thing to be cut&lt;br/&gt;
ctrl-_	Undo”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://www.hypexr.org/bash_tutorial.php"&gt;&lt;a href="http://www.hypexr.org/bash_tutorial.php"&gt;http://www.hypexr.org/bash_tutorial.php&lt;/a&gt;&lt;/a&gt;&lt;/em&gt;</description><link>http://agaskar.com/post/540764633</link><guid>http://agaskar.com/post/540764633</guid><pubDate>Thu, 22 Apr 2010 07:43:00 -0700</pubDate></item><item><title>Removing a file from git .... FOREVER</title><description>&lt;p&gt;Successfully used a combination of this &lt;a href="http://stackoverflow.com/questions/307828/git-remove-file-accidentally-added-to-the-repository"&gt;Stack Overflow question (Git: Remove file accidentally added to the repository.)&lt;/a&gt; and this &lt;a href="http://github.com/guides/completely-remove-a-file-from-all-revisions"&gt;Github Guide (Guides: Completely remove a file from all revisions)&lt;/a&gt; to kill some files from my repo for good.  For those of you wondering why you’d ever want to do this: git sends all deltas when you checkout, meaning every file ever committed gets sent down the wire, even if you `git rm` it later. Kinda sucks if you accidentally check in a 15, 20M file that you have to download only to delete immediately. In my case the file was only 500k, but I wanted to kill it before I made too many more commits. Here’s the exact command sequence I ran: &lt;/p&gt;

&lt;ol&gt;&lt;li&gt;
First, make a backup of your local repo, and make sure there’s no local commits. No need to have things get confusing. &lt;/li&gt;
&lt;li&gt;&lt;pre&gt;git filter-branch --index-filter 'git rm --cached --ignore-unmatch all_the_files.you want_to_remove.here' &lt;OLDEST COMMIT SHA WITH THE FILES YOU WANT TO REMOVE&gt;..HEAD&lt;/pre&gt; Make sure you get all the files you want to kill in one swoop — git throws an error if you try to re-run this command without pushing/refreshing&lt;/li&gt;
&lt;li&gt;&lt;pre&gt;git push --force&lt;/pre&gt; Github recommends &lt;pre&gt;git push --force --verbose --dry-run&lt;/pre&gt; and I’m assuming this’ll throw an error if something terrible is about to happen, but it printed nothing in my case, so I just moved on. It couldn’t hurt to try.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;I’m not sure I’d use this on a repo where I was working with more than a few other people; I imagine everyone would have to re-checkout the repo from master, so it could be pretty disruptive. Another good reason to look at the changesets before you push. &lt;/p&gt;

&lt;p&gt;If you haven’t actually pushed yet, but the file you want to remove isn’t in your last commit, you can `git reset SHA`, which will jump you to that commit and move already committed files to your staging where you can then modify your commit. If you just want to remove a file in your last commit (and you haven’t actually pushed yet), git rm that file and use `git commit —amend`&lt;/p&gt;</description><link>http://agaskar.com/post/474869912</link><guid>http://agaskar.com/post/474869912</guid><pubDate>Fri, 26 Mar 2010 07:57:00 -0700</pubDate></item><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></channel></rss>
