[rspec-users] Of ActiveRecord, arel, and train wrecks

Scott Taylor scott at railsnewbie.com
Mon Feb 22 18:16:26 EST 2010

On Feb 22, 2010, at 6:07 PM, Rick DeNatale wrote:

> I thought that it might be worth starting a discussion about the best
> approaches to deal with spec'ing what's becoming more and more common
> in apps using active record.
> It started with named scopes, now we have arel, and the old find calls
> with parameters are being deprecated.
> When I watched Ryan Bate's latest opus
> http://railscasts.com/episodes/202-active-record-queries-in-rails-3
> this morning I decided it might be good to bring my concerns up.
> The problem of course is that we're going to get used to writing more
> code like this:
> Article.where("published_at <= ?", Time.now).includes(:comments)
>> From one aspect, I find all this very nice. It makes writing queries
> easier and much more readable.
> On the other hand these are the kind of "train wreck" violations of
> the "strong suggestion of Demeter" which makes mocking and stubbing
> difficult among other things.
> Thoughts?

I haven't spent enough time with it yet to know, but I suspect that surface mocking (what is usually called stubbing in this community) is going to get harder with the demeter violations.

OTOH, I guess as there is more structure to a query, it might be easier to create a more general & dynamic mock library for it - something like lafcadio's mocking library or fakefs.  With a mocking library like that out there, we'll have faster test suites.  I'm hoping that it totally obliviates the need for a library like guillotine (http://github.com/smtlaissezfaire/guillotine). 


> -- 
> Rick DeNatale
> Blog: http://talklikeaduck.denhaven2.com/
> Twitter: http://twitter.com/RickDeNatale
> WWR: http://www.workingwithrails.com/person/9021-rick-denatale
> LinkedIn: http://www.linkedin.com/in/rickdenatale
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users

More information about the rspec-users mailing list