Glad You're Ready. Let's Get Started!

Let us know how we can contact you.

Thank you!

We'll respond shortly.

Abhi Hiremagalur

Posts By

More vibrant Go in 3 moves

Move 1: Describe interactions with roles

Go’s interfaces are satisfied implicitly, making it incredibly easy to create role interfaces.

Describing new roles as we implement a method lets us postpone deciding how we’ll meet its needs. Conveniently, our method is specific about what we know and open to what we might learn.

Read more »

Hash#fetch with confidence

Hash#fetch is stricter about key presence than Hash#[]

{}[:foo] => nil {}.fetch(:foo) KeyError: key not found: :foo

If you forget to set an ENV variable, would you rather your application fail late or immediately?

ENV['TWITTER_OAUTH_TOKEN'] => nil ENV.fetch('TWITTER_OAUTH_TOKEN') KeyError: key not found

It’s especially interesting when a key with a truthy default is explicitly set to a falsy value.

Read more »

Standup 08/05/2010: 'bundle check' and Websockets

Ask for Help

  • How to specify compile flags when installing the mysql gem with Bundler 1.0.0RC1?

Don't. Instead use version 2.8.1 of the mysql gem and ensure mysql_config is on your PATH.

Interesting Things

This saved about three minutes of build time (from what used to be 11ish runs of bundle install instead of bundle check.)

  • Websocksets are easy, use them if you need to 'push' to your webapp and your server can handle many persistent connections.

This was in reaction to some recent conversation between Pivots about Pusher, which will keep persistent connections on your behalf.

This said, here's a quote from

WebSockets represent an alternative to Comet and Ajax. However, each technology has its own unique capabilities. Learn how these technologies vary so you can make the right choice.

Standup 08/04/2010: Accounting on Rails anybody?

Ask for Help

  • Double-entry/ledger based accounting in Rails (i.e. Quickbooks in Rails for free)
Ideally would be tied in with user/role system where each accounting entry would be tied to a user, but also reconciled against a master account. Recommendations? Latest and greatest?

One suggestion was to look at the code that Wesabe open sourced code when they closed their doors.

  • Error message when opening Rubymine "Invalid Git Root"

This is likely because the project included a submodule that wasn't configured correctly, fix this in under Rubymine's version control preferences.

Add submodule screen in Rubymine

Interesting Things

  • Test 404 handling (e.g. rescue_from ActiveRecord::RecordNotFound, :with => :render_record_not_found) with Cucumber by temporarily setting ActionController::Base.allow_rescue = true. This is usually set to false in features/support/env.rb

  • JSON.pretty_generate hates Rails 3 Hashes

This should work in most modern browsers. Follow the Mozilla docs, NOT the various blog posts about this.

Standup 08/03/2010: Bundle me this Batman!

Ask for Help

  • I asked if there's a date library in Ruby as rich as Java's JODA

Suggestions included Chronic and RI_CAL though I'm hoping for something that can represent arbitrary periods (ranges?) of time JODA and handles interval calculation and other such date/time arithmetic.

  • is(':visible') doesn't always work as expected in Jasmine

One project reported that using this to as part of a Jasmine spec to ensure that an element becomes visible doesn't appear to be reliable.

  • Annotate and Git History failed for a team using Rubymine 2.0.2 and git in combination with svn.

They solved the problem by downgrading to git

I followed instructions here to create a local set of portfiles: and grabbed the older portfile from here:

After I could do a port search git-core and have show up, I was able to sudo port deactivate git-core @1.7.2_0+doc+svn and sudo port install git-core @

  • One person was experienced compile errors when installing memprof on Ubuntu, fortunately somebody else had gotten this working before and offered to help him through thee.

  • A team noticed that Bundler ran multiple (4) times on CI taking nearly 11mins overall and wanted to know to make Bundler run only once

It was suggested that the problem may be due to the way they'd setup their preinitializer.rb and they should move the bundle install into a Rake task.

if ENV['IS_CI_BOX'] puts "IS_CI_BOX is set, running bundle install..."

system('bundle install') || raise("'bundle install' command failed. Install bundler with gem install bundler.")


It was pointed out that they should make sure their Gemfile.lock file is checked into version control, which it was. Additionally Bundler 1.0.0 RC1 will allow isolating gems to a local path using bundle install path --disable-shared-gems

Interesting Things

  • The Facebook Graph API doesn't appear to implement OAuth 2.0 properly/completely so it doesn't work with the OAuth2 gem
  • One Pivot noticed that the version of ImageMagick installed on the default EngineYard solo image is out of date and had to upgrade this manually.

Standup 08/02/2010: weird errors and convenient Jasmine fixture generation

Interesting Things

  • One team noticed an odd error when they mistyped a Thor constant name.

ArgumentError: Thor is not missing constant Sandbox!.

This appears to due to how #const_missing in activesupport handles nested constant names. Specifically when trying to reference one nested constant from within another nested constant that isn't its parent:

Curiously the spec that exposed the previous issue also returned this odd summary:

0 examples, 1 failure, -1 passed

This is also similar to another standup blog post from almost a year ago.

Standup Blog: 11/19/2009


One project is releasing soon but has not yet been indexed by Google, what's the best way to get Google to index the website quickly?

How do people distinguish between nil and a cache miss when using Memcached and Ruby?

  • Some suggested using a :symbol to represent nil

form_for @object sometimes posts to the wrong action, has anybody else seen this?

Standup Blog: 11/18/2009


"Recommendations for a configurable embedded video player"

Standup Blog 02/07/2009: RM 1.1.1 + Java 1.6 on OS X Solved, Pivotal video, PDF Libraries

Interesting Things


"What Ruby PDF libraries are people using?"

  • Especially for HTML to PDF generation

Standup 06/30/2009: (Really) delete git tag, rails filter action and matrix knot!

Interesting Things


"How do you permanently remove a git tag?"

  • One team would like a delete a tag created by their CI, but it keeps coming back if somebody who has pulled the tag locally does a push.