---
title: This week in open source
teaser:
tags: news,open source
author: Mike Burns
published_on: 2011-11-11
---

## kumade

Small bug fix in the [kumade](https://github.com/thoughtbot/kumade) Heroku deployer from Gabe Berke-Williams ([gabebw](http://github.com/gabebw)). Apps are now restarted after deployment ([7c5a6c6](http://github.com/thoughtbot/kumade/commit/7c5a6c636412890c2de8d0a59bfc4cc237241603 "Correctly restart app.")). This led to _version 0.8.1 of kumade_ ([eed756a](http://github.com/thoughtbot/kumade/commit/eed756af6e4f3fbffac0154ef991efb82239b1ef "Bump to 0.8.1")).

## suspenders

Read my lips: no new features; that's the tale for [suspenders](https://github.com/thoughtbot/suspenders) this week. Instead, the app generator got some internal improvements from Gabe Berke-Williams ([gabebw](http://github.com/gabebw)) and Harold Giménez ([hgimenez](http://github.com/hgmnz)). Gabe moved suspenders over to the bundler gem tasks, reducing the `Rakefile` size immensely ([b66f34a](http://github.com/thoughtbot/suspenders/commit/b66f34a480dc1682f5de9de33c4e5affb31e8312 "Remove unused constant.") and [43f0a68](http://github.com/thoughtbot/suspenders/commit/43f0a68cc15ca75f70e00f17378e8d0727afe525 "Use Bundler gem conventions.")). Harold fought with aruba timeouts ([e9dc22b](http://github.com/thoughtbot/suspenders/commit/e9dc22b7b3e2debca40a43c673607df5fa5586c5 "Doubling up on the aruba timeout again"), [f41153f](http://github.com/thoughtbot/suspenders/commit/f41153f0b0ba37c8cb6449872a60608361f289df "Increase timeout even more"), [bc48b45](http://github.com/thoughtbot/suspenders/commit/bc48b45c51e90d8189a07f08195187a3e9bf14c9 "Minor test suite nitpicking"), [920989d](http://github.com/thoughtbot/suspenders/commit/920989d3f3cf8e4b1107d64019f554f5b749861c "Double up the aruba timeout, for CI")) but, after the dust had cleared, he ran bundler after the project's Gemfile has changed ([7e06fe7](http://github.com/thoughtbot/suspenders/commit/7e06fe7a1ebc5f3eaeccde3dda7434bbef93aac4 "Run bundler after we modify the project")). To keep tests green he put it on Travis ([cca000d](http://github.com/thoughtbot/suspenders/commit/cca000deef06473295ab37a0069cc9c2322b8e86 "Default travis script") and [7b1c1de](http://github.com/thoughtbot/suspenders/commit/7b1c1de24bbd546e53b7bb2354ef35f3370cd46a "Starts of a travis.yml")).

## bourbon

New feature in the [bourbon](https://github.com/thoughtbot/bourbon) Sass Mixins this week: CSS3 columns. You got your `@columns`, your `@column-count`, your `@column-fill`, `@column-gap`, `@column-span`, and `@column-width`, and don't forget the classic `@column-rule` hierarchy: `@column-rule-color`, `@column-rule-style`, and `@column-rule-width`. It's all columns here, thanks to Phil LaPier ([plapier](http://github.com/plapier)) ([540f05e](http://github.com/thoughtbot/bourbon/commit/540f05e511b32e0ea981792f015cd4c1424abaa4 "Added support for css3 columns and updated readme")).

Aside from that are a bunch of documentation updates. If you were confused before, you should be marginally less confused now: Gabe Berke-Williams ([gabebw](http://github.com/gabebw)) fixed formatting and grammar ([1d187fe](http://github.com/thoughtbot/bourbon/commit/1d187fefd9a087077766186ba8f4de3820fbc443 "Fix more formatting."), [34e8eac](http://github.com/thoughtbot/bourbon/commit/34e8eac2ea61d92c257f61f99388956317bbd92b "Fix formatting."), and [19c32d9](http://github.com/thoughtbot/bourbon/commit/19c32d996cdc0b1d0f7a86fbbef8e7572b11681a "Improve README.")) and Phil documented the `@border-radius` changes from before ([fd17cdf](http://github.com/thoughtbot/bourbon/commit/fd17cdf37059709a850b63a72867da92222cad04 "Updated readme to reflect new border-radius additions")).

## factory_bot[^1]

No new features in [factory_bot](https://github.com/thoughtbot/factory_bot) this week, but it's now using bundler's rake tasks ([cad4bdb](http://github.com/thoughtbot/factory_bot/commit/cad4bdb91206d887556e8af519fe95d466d398ba "date isn") and [5133fa9](http://github.com/thoughtbot/factory_bot/commit/5133fa9f52c2b63d7afac4717eb7c7d50fc19877 "Use Bundler gem tasks.")) and the quick-start guide is slightly more clear ([565ff1c](http://github.com/thoughtbot/factory_bot/commit/565ff1c250b251af6255251e3434136f2178ded0 "Use correct module in docs.")), thanks to Gabe Berke-Williams ([gabebw](http://github.com/gabebw)).

## appraisal

Wild times in [appraisal](https://github.com/thoughtbot/appraisal) land: _version 0.4.0_ comes with support for multiple gem sources, specifying sources as symbols instead of strings, and preserving the dependency order (yes!). Let's name some names:

Josh Nichols ([technicalpickles](http://github.com/technicalpickles)) sent us the pull request for specifying symbols for source names, like `source :rubygems`  [c73d05f](http://github.com/thoughtbot/appraisal/commit/c73d05f0e5a9225ff536e745aa89665c1615d1e5 "Fix source_entry to work with sources like :rubygems") and [35c8f58](http://github.com/thoughtbot/appraisal/commit/35c8f58806999dc9c62ee72c516aafbf9f55b84f "Failing test for symbol sources")). Joe Ferris ([jferris](http://github.com/jferris)) preserved the dependency order, so the gemfiles are not re-written every time you run your tests on Ruby 1.8 ([193e375](http://github.com/thoughtbot/appraisal/commit/193e375f754d2ecd718203e6c6154e4508d7959a "Removed debugging code") and [e7cacd4](http://github.com/thoughtbot/appraisal/commit/e7cacd421d377105b7000e15f4c50732facde35a "Preserve order in dependencies")). Joe also added support for zero or more sources ([2d7616b](http://github.com/thoughtbot/appraisal/commit/2d7616badf625cb1a24a09a7bf75663f07191aaf "Support zero/multiple sources")).

Internally&mdash;relevant to all appraisal hackers out there&mdash;Joe moved appraisal to use the bundler rake tasks ([1137175](http://github.com/thoughtbot/appraisal/commit/1137175b766c6ec5a36419c27118d8cca64d4604 "Obey bundler convensions in gemspec, Gemfile, and Rakefile")), set up rspec for the project ([ca2d12f](http://github.com/thoughtbot/appraisal/commit/ca2d12f4cb643fbaaab6c791735746b2ef2c1007 "Setup rspec")), sped up the integration tests by removing a call to `bundle install` ([f5da0ba](http://github.com/thoughtbot/appraisal/commit/f5da0baa301dabb525d9f38bd99f6e5ac053c71c "Use locally built dummy gems so we don") and [96ac443](http://github.com/thoughtbot/appraisal/commit/96ac4436519e39d7861d113b8965d28c02313a86 "Use dummy gems so we don")), and cleaned up some of the Cucumber feature files ([d50f30e](http://github.com/thoughtbot/appraisal/commit/d50f30ec660e1d891d605ba540e645636e3401da "Tag the whole feature instead of tagging every scenario")).

Additionally, Joe noted that he believes that the `Gemfile.lock` should be checked into version control ([508f760](http://github.com/thoughtbot/appraisal/commit/508f76031df3fc07e3f4aa01ef799fdb80174894 "Added a note to the README about version control")) and he was the one who released version 0.4.0 ([2388945](http://github.com/thoughtbot/appraisal/commit/2388945ecd323658aba3be92976316127f7e3d5e "Version 0.4.0: symbolic sources, multiple sources, and preserved dependency order")).

## fake_braintree

The mock object for the Braintree credit card processor, [fake_braintree](https://github.com/thoughtbot/fake_braintree), hit version 0.0.5 this week, with support for `Braintree::Customer.find` and `Braintree::TransparentRedirect`. Gabe Berke-Williams ([gabebw](http://github.com/gabebw)) added the `Braintree::Customer.find` support ([32ad3cc](http://github.com/thoughtbot/fake_braintree/commit/32ad3cc67f152a481fd81a1964c9f27902671154 "Support Braintree::Customer.find")) and released version 0.0.5 ([a4ce340](http://github.com/thoughtbot/fake_braintree/commit/a4ce3401fec93e8d61d4cd13c72b3ee8a33d1db0 "Bump to 0.0.5")); Joe Ferris ([jferris](http://github.com/jferris)) added the `Braintree::TransparentRedirect` support ([a5943a7](http://github.com/thoughtbot/fake_braintree/commit/a5943a7cbf1918843ea1e5fbddf181f874e914b1 "Fix typo in README") and [e69e9a7](http://github.com/thoughtbot/fake_braintree/commit/e69e9a7ed9582bb98dcde37202824b77fae703d4 "Transparent redirect")).

Gabe and Joe both did some refactoring too; Gabe moved the test CC number into a constant ([70af61e](http://github.com/thoughtbot/fake_braintree/commit/70af61e0c41b45271e545b09777889b93ea584c8 "Use the same CC number most places.")) and added a test for recording the billing address ([26cbdd3](http://github.com/thoughtbot/fake_braintree/commit/26cbdd328205410bcd3bbe8dad0a49da062910c0 "Test that billing address is recorded.")). Joe split the `.activate!` method into two discrete parts, which reads better ([e52a874](http://github.com/thoughtbot/fake_braintree/commit/e52a8742b3ca76f30d7e002da8e48cc647c21e1f "Split up long method")); he also used TimeCop to avoid erratic test failures, which I'm sure were bugging him ([7c4795a](http://github.com/thoughtbot/fake_braintree/commit/7c4795a79139755995bd2d8483c87d6845f2ccbb "Avoid erratic failures by freezing time")). Oh hey get this, he replaced ShamRack with a `Capybara::Server`, which I didn't know you could do ([b345058](http://github.com/thoughtbot/fake_braintree/commit/b345058018bb479727aa8bf91dbf2edb61d6a741 "Boot a rack server for the fake endpoint instead of using ShamRack")).

Gabe had his usual documentation fun, fixing formatting ([e50ba56](http://github.com/thoughtbot/fake_braintree/commit/e50ba567d2a23003710a15c50088b9945bc59ebb "Formatting.")) and also documenting the heck out of the <abbr title="Application Programming Interface">API</abbr> methods ([602774a](http://github.com/thoughtbot/fake_braintree/commit/602774ac6e25c67e30d1f29027f4670b1165db62 "Expand the README a lot.")).

[^1]: Looking for FactoryGirl? The library was renamed in 2017.
[Project name history can be found here.](https://github.com/thoughtbot/factory_bot/blob/master/NAME.md)
