Protip: Faster Ruby Tests with DatabaseCleaner and DatabaseRewinder

Sep 18, 2013|2 Min Read|Comments|

Please also see this blog post on tweaking your ruby GC settings . I use and love DatabaseCleaner , although historically I had never paid too much attention on the performance of its varies cleaning strategies - I’d always used truncation . We use Postgres, and after digging around and finding out the difference between DELETE and TRUNCATE , I ended up improving our test suite speed by about 30-40% simply by tweaking the cleaning strategies. Essentially, we want to truncate the DB only…


Protip: Ruby Devs, Please Tweak Your GC Settings for Tests!

Sep 06, 2013|1 Min Read|Comments|

It was made apparent to me that many ruby devs either aren’t aware or couldn’t be bothered to tweak their ruby garbage collector settings. Well, if you are using MRI, please start tweaking your GC settings. Here’s what I use (on my 15" Macbook Pro Retina): Not only can you tweak it for your local dev machine, you can also tweak Jenkins, Travis CI , Wercker and other CI solutions, making instant speed gain for your test suite! Here’s what we get: YMMV depending on your system and available RAM…


Writing Sensible Tests for Happiness

Writing good, sensible tests is hard. As a Rubyist, I feel lucky to be part of a community that embraces tests. Though at the same time, I have come across too many projects that suffered from not having sensible tests. What are Sensible Tests? There often isn’t a silver bullet when it comes to software development. Technical stuff aside, many things contribute to the solution to a given problem - the team, the project and the business to name a few. This article does not attempt to present any…


Gotchas in the Ruby Sequel Gem

Aug 21, 2013|2 Min Read|Comments|

I haven’t really used Sequel much therefore I am definitely a newbie. However, after days and nights of frustration, endless debugging and some search-fu during the development of Datamappify , I have finally arrived at the conclusion that Sequel is a capable library, as long as you are aware of the gotchas. Gotcha 1: Always use " select "/" select_all ", or your data records will mysteriously have wrong IDs! In ActiveRecord, joining an associated model couldn’t be simpler: In Sequel, despite…


The Future of Computing, The Future of Computer Programmers - An Interview with Yukihiro "Matz" Matsumoto

A while ago I translated an interview with Matz done by a Chinese book publisher. The interview and the translation were well received, so this time I am translating another interview with Matz, done by Ito, the editor-in-chief from Japanese website Engineer Type . Since I don’t read Japanese, the translation is based on Turing Book’s Chinese translation . The Chinese translator has done a great job translating the interview, but there are still many words and sentences lack sufficient…


Datamappify - A New Take on Decoupling Domain, Form and Persistence in Rails

This post is about the ruby library we are building - Datamappify , please go check it out. At Locomote we are building a relatively large web application using Rails. Before we began to lay the foundation, we knew very well that if we wanted the project to be maintainable we had to architect the system with extra care and attention. More specifically, we can’t rely on simply using ActiveRecord which combines behaviour and persistence as our domain models. We began our search for something…


would you be interested in reading such a book

Apr 29, 2013|1 Min Read|Comments|

Would you be interested in reading such a book ?


ActiveRecord and DB Migration Ate My Model Attributes!

Feb 27, 2013|2 Min Read|Comments|

Update: You might also want to check out reset_column_information . So a few days ago we started seeing the following errors on our Jenkins builds (swapped with fictional model and attribute names): attack_power is a new attribute we recently added to the Ironman ActiveRecord model. I was baffled, as the table column is clearly there but ActiveRecord couldn’t see it. This weird behaviour is confirmed by debugging the model: And by debugging the schema: So apparently somehow ActiveRecord ate…


"Become A Better Developer You Can" - Video of My RubyConf China 2012 Talk

Dec 03, 2012|1 Min Read|Comments|

It was the first time I presented in front of 400+ people so I was really nervous - I blasted through the talk in under 30 minutes even though I was supposed to talk for 45 minutes, oh well. ;) Also, my slides are available too . P.S. If you’re located in China, you may view the talk at Railscasts China .


An Interview with Yukihiro "Matz" Matsumoto

Update: Please check out this new interview with Matz , done by Engineer Type. A week ago I went to Shanghai, China to attend and to give a talk at RubyConf China . The day before the conference’s first day a bunch of us were invited to a VIP dinner where we met with Matz and got to play with a device running MRuby . And I heard that earlier on that day Matz was ‘adopted’ by a book publisher to do an interview. I have found the interview ( in Chinese ), and found it to be really useful. So…