26 Oct 2007

Single Table Inheritance validates_uniqueness_of Problem

rails, ruby, RubyonRails, Technology, web development posted by Akhil Bansal

Consider a case of STI where:

Now try following at console:

This will let you create three records in users table with same name, validates_uniqueness_of written in User class has no effect on it. validates_uniqueness_of automatically scoped with class names, that means it will not let you create two managers with same name or two customers with same name or two users with same name.

If you want uniqueness of an attribute in overall table, put the following code in some file in your lib dir and require that file in environment:

And then use validates_overall_uniqueness_of instead of validates_uniqueness_of.

13 Sep 2007

Acts_as_solr: Starting solr server on windows

acts_as_solr, rails, rails plugins, ruby, RubyonRails, solr, Technology posted by Akhil Bansal

I was using acts_as_searchable for one of my project, which uses Hyperestraier in background. Yesterday I decided to use acts_as_solr which uses solr(based on Lucene Java search library). I did all written in its Manual/Readme, but when I issued

to start the solr server, it threw a heart breaking “Bad file descriptor” error, although acts_as_solr was working fine on one of my colleague’s linux machine.

I started digging around this and found that there is an issue in rake task that starts the solr server. Actually the problem was this rake task uses ‘fork’ which is not available on windows, also it only handles ‘ECONNREFUSED’ exception which is actually “Connection Refused” error raised by ruby on linux. But in windown it throws ‘EBADF’ which is “Bad file descriptor” error raised by ruby on windows.

So below is the hack for that:

Just add this to vendor/plugins/acts_as_solr/lib/taks/solr.rake, and start solr server on windows by issuing

05 Sep 2007

Rails Hackfest August-07 Results

hackfest, rails, ror, ruby, RubyonRails posted by SUR


Hackfest Winners

02 Sep 2007

Rails Hackfest August-07

hackfest, rails, ror, ruby, RubyonRails posted by SUR

I participated in August Rails Hackfest which was a great experience.
You can see the missing August 2007 from the Post Archives. I didn’t post anything last month as I was busy in submitting rails patches. I submitted a lot of patches out of which I got one patch committed to the rails code under changeset 7362 which was about optimizing the code of ActiveRecord Validation validates_presence_of filed under the ticket 9392. Me and kampers got a collaborated patch accepted under the changeset 7383 which was a tiny patch for improving documentation of Action Controller filed under the ticket 9454. Many of my patches got rejected as well by the more experienced Rails Contributors but still, many patches are there to be analyzed by the Rails Core Team.

As I got my code embedded in the Rails Core, I am proud to be recognized as Rails Core Contributor. Tarmo was one of the most active and really appreciable contributor in August Rails Hackfest. Because of this participation I paid very less attention to the other important things including the clients’ projects as well :D. Moreover in the middle of the month I needed to go out to give Rails Training to a really enthusiastic team of a Bangalore based company. It was lovely experience there, but I got out of touch from the Hackfest for those crucial 5 days. After returning back I tried to keep the pace again. I am desperately waiting for the result of the August Rails Hackfest which might get published in a day or two. The first prize is the Entry Pass to the RailsConfEurope. I am looking for submitting more patches now onwards but not with the same pace as of last month, coz I will not be participating in the Hackfest but keeping the spirit of Rails Core Contributor and the pay back policy of open source. I will also be releasing some rails plugins and probably a ruby gem as well this month.

Have you tried this..

30 Aug 2007

Customizing CruiseControl build for RSpec

CruiseControl, rails, ruby, RubyonRails, Technology, Tools, web development posted by Akhil Bansal

Yesterday I posted about CruiseControl for Rails projects. It was working fine with all my rails projects using traditional test cases, But today I faced a problem with a project using RSpec. Actually, By default CruiseControl follows the following step to build:

  1. rake db:test:purge
  2. rake db:migrate
  3. rake test

This default was not working with my last project As I was using RSpec for my project. I found that we can overwrite default way of building by creating a rake task named cruise in our project. Means by building CruiseControl will run your custom rake task only, so you have to take care of all other things i.e. migrate etc.

Hence I created following rake task in RAILS_ROOT/lib/tasks/custom_cc.rake

and it worked for my rails project using RSpec.

Next Page »« Previous Page