---
title: This week in open source
teaser:
tags: news,open source
author: Mike Burns
published_on: 2012-03-23
---

## bourne

Version 1.1.2 of [bourne](https://github.com/thoughtbot/bourne) is out ([fba748b](http://github.com/thoughtbot/bourne/commit/fba748bfb6161fcd66d18561a0f9b4a3f40d4be9 "Bump to 1.1.2.")), without a `NEWS` file describing the changes! However, the history indicates that it is compatible with a more recent version of mocha and it presents better error messages now.

## bourbon

We're trying out version 2.0.0, release candidate 1, of [bourbon](https://github.com/thoughtbot/bourbon) ([0ec0115](http://github.com/thoughtbot/bourbon/commit/0ec0115c0e58fadb73f37067ced6d8d8ce26a371 "Version bump to 2.0.0.rc1")). So please, try it out and let us know what's broken.

Out of nowhere, Gabe Berke-Williams ([gabebw](http://github.com/gabebw)) changed the formatting of something ([7ec8959](http://github.com/thoughtbot/bourbon/commit/7ec8959ce9336b6c359f9fcd6043d88a8bf1a446 "Formatting.")).

But Phil LaPier ([plapier](http://github.com/plapier)) removed `animation-basic` ([316f2a7](http://github.com/thoughtbot/bourbon/commit/316f2a72aa48ba530b8587520fb9165a01362a9c "Removed deprecated animation-basic mixin")), cleaned up the default padding for buttons ([2a46225](http://github.com/thoughtbot/bourbon/commit/2a462252f438190651cf4b5bf707a7deab530645 "Fixed the default padding for buttons")), changed the `radial-gradient` in a way I don't totally understand ([94506ea](http://github.com/thoughtbot/bourbon/commit/94506ea945b597d3466f5fd4d7ef47e4987a5bf7 "Merge branch ")), added some shorthands for `transition` ([3342577](http://github.com/thoughtbot/bourbon/commit/3342577b0846d17f9ac6375003d327f279e8e401 "Merge branch ")), removed the `position` mixin ([4621347](http://github.com/thoughtbot/bourbon/commit/4621347ba0dbb2901fb87177b09c314b68a892fd "Removed position addon")), and updated the README ([5f1176d](http://github.com/thoughtbot/bourbon/commit/5f1176d5458201b5aa4ef412fc01b556fa331313 "Further improvements to the readme") and [f5cdfad](http://github.com/thoughtbot/bourbon/commit/f5cdfadc23f9cf7670912ebdd519ae87689f1d46 "Updated Readme")).

## factory_bot

Version 3.0.0 of [factory_bot](https://github.com/thoughtbot/factory_bot) is out: read [the blog post](https://thoughtbot.com/blog/factory-bot-hits-3-0) to know more. In summary: goodbye five-year-old Ruby 1.8, goodbye two-year-old Rails 2, goodbye four-year-old FactoryBot syntax!

## suspenders

Minor cleanups to [suspenders](https://github.com/thoughtbot/suspenders) this week: Gabe Berke-Williams ([gabebw](http://github.com/gabebw)) fixed some markdown ([107b103](http://github.com/thoughtbot/suspenders/commit/107b103a3cf1eb6743ee0d6b806e3eea53538071 "Formatting.")) and Andy Waite ([andyw8](http://github.com/andyw8)) removed some annoying whitespace probably left by someone using TextMate ([32104f9](http://github.com/thoughtbot/suspenders/commit/32104f952e7a1d4b3ee42b37bab3bbdeef49b565 "Removing trailing whitespace to avoid warnings from rails_best_practices gem")) and noted the fact that you must be running Postgres while suspending ([de20630](https://github.com/thoughtbot/suspenders/pull/71 "Adding note to README about PostgreSQL dependency")).

## paul_revere

In [paul_revere](https://github.com/thoughtbot/paul_revere) news this week, Cameron Desautels ([camdez](http://github.com/camdez)) pointed out that controller helpers need to use the `helper` class method ([3b74d84](http://github.com/thoughtbot/paul_revere/commit/3b74d84167a817676d5b010ec3805f48a44b240e "Update usage docs w.r.t. making helpers available")).

## shoulda

The [shoulda](https://github.com/thoughtbot/shoulda) gem got taken care of by Gabe Berke-Williams ([gabebw](http://github.com/gabebw)) this week: the Rails test helpers use the installed shoulda-matchers and shoulda-context gems instead of the GitHub ones ([6f3b7b4](http://github.com/thoughtbot/shoulda/commit/6f3b7b4e9c4b93fecc4d5e1481126183d90fdd2d "Don")); the dependencies are updated to more recent versions, and the tests require the user of bundler now ([34d9f4a](http://github.com/thoughtbot/shoulda/commit/34d9f4a6b8f190ed154a484d2fb444bcb60b4ba5 "Update dependencies and get tests passing.")); the Rakefile doesn't present a `clobber` action, whatever that did ([058724b](http://github.com/thoughtbot/shoulda/commit/058724b15bc335b54b2af99555de371355bb4594 "Remove unnecessary bits from Rakefile.")); and the contribution guidelines now reflect the fact that we've wanted pull requests for the past three years ([f75da74](http://github.com/thoughtbot/shoulda/commit/f75da7490e542d2da228b2dd74b3ca585f2bbdda "Update contribution guidelines.")).

## shoulda-matchers

This week, Gabe decided to take all pull requests on [shoulda-matchers](https://github.com/thoughtbot/shoulda-matchers) over the past few&hellip;years. Gabe Berke-Williams ([gabebw](http://github.com/gabebw)) also did a bunch of cleanup and maintainance ([c10cf34](http://github.com/thoughtbot/shoulda-matchers/commit/c10cf343aef3b3aca6c001b390708e1c3d3caa05 "Use #none? instead of inverting #all?"), [31b140f](http://github.com/thoughtbot/shoulda-matchers/commit/31b140f5307c36339763d7fdd6d27888be925c1f "Get tests passing on 1.8.7."), [c27de41](http://github.com/thoughtbot/shoulda-matchers/commit/c27de41a38ee6326ade50c8e73c2208718077d16 "Rename file to match project convention. Fixes #77."), [7d70805](http://github.com/thoughtbot/shoulda-matchers/commit/7d708058f07ab2896762b79f26ba2fdd4c6e1ae6 "Clean up helpers spec."), [7950d00](http://github.com/thoughtbot/shoulda-matchers/commit/7950d00b69df70b1f26ee509ce0ccab48f5cbbf5 "Remove stray curly brace."), [3d6b8a8](http://github.com/thoughtbot/shoulda-matchers/commit/3d6b8a8ae79644042af0e4fde992ea19a1713091 "Clean up style."), [ff0d364](http://github.com/thoughtbot/shoulda-matchers/commit/ff0d3644757c60a814ad1a6449f4e19945f21d40 "Fix alignment."), [ca6d428](http://github.com/thoughtbot/shoulda-matchers/commit/ca6d428760397a82662cebbe1bcddcded44e86fc "Test that correct error is raised."), [ba78ed0](http://github.com/thoughtbot/shoulda-matchers/commit/ba78ed0ff80758470a5094890379bf3772de7f16 "Cleanup."), [8724cd2](http://github.com/thoughtbot/shoulda-matchers/commit/8724cd2bb269067f9a0761aaf246f744112128e5 "Define the model."), [c493c40](http://github.com/thoughtbot/shoulda-matchers/commit/c493c40fd722b9c94169e4edd350e568e06ef39c "Specify the expected error."), [f841805](http://github.com/thoughtbot/shoulda-matchers/commit/f84180504d732521c36f2c54ffcea80c2b94d4c2 "Style."), [0746b79](http://github.com/thoughtbot/shoulda-matchers/commit/0746b79f783619dff8508e9da23c7db49a0ce8f2 "Remove unnecessary attribute from spec."), [963a293](http://github.com/thoughtbot/shoulda-matchers/commit/963a293dc5074c8b1d8d0fca6ffe668388e29789 "Use a version of bundler compatible with Travis CI."), [65d6d1c](http://github.com/thoughtbot/shoulda-matchers/commit/65d6d1c47858366a8536743757e065130df79ee8 "Refer people to the correct projects in the README."), [afaf72b](http://github.com/thoughtbot/shoulda-matchers/commit/afaf72bbc47d12a8c6d1b1bd07599a24243fcc01 "Remove old contribution guidelines."), and [76127ea](http://github.com/thoughtbot/shoulda-matchers/commit/76127ea45fcade0cf119538952f6c7387ebf2efb "Update contribution guidelines.")).

Norway's own Håkon Lerring ([Hakon](http://github.com/Hakon)) added `as_instance_of` to the `serialize` matcher ([9b5e972](http://github.com/thoughtbot/shoulda-matchers/commit/9b5e972553ca49fc934fd12451a187798e9f2bbf "change return-guard into if-else"), [3b891cf](http://github.com/thoughtbot/shoulda-matchers/commit/3b891cf7049a95160b095260ceb6a857dfb58e1b "Fix failing tests on rails 3.1 and higher"), and [d9906d8](http://github.com/thoughtbot/shoulda-matchers/commit/d9906d84ce188474a1114cac8870b18d8a3b5287 "Add testing the class of a serializer instance")). Hey Håkon, I'm moving to your neighboring country soon!

Matthew Daubert ([MDaubs](http://github.com/MDaubs)) added an odd `query_the_database` matcher, which could be useful for making sure a n+1 is good and dead ([0ecb774](http://github.com/thoughtbot/shoulda-matchers/commit/0ecb7744f1be97af090d4098954fd5cf62ddabc0 "Use mocha stub"), [93cd34e](http://github.com/thoughtbot/shoulda-matchers/commit/93cd34e113d329134380737c117ffad8f6cba70b "Clarify spec names"), [56de191](http://github.com/thoughtbot/shoulda-matchers/commit/56de191d4e145114d41971852421185d165a34f2 "Test that exception is thrown in Rails < 3.1

AbstractAdapter doesn"), [8e7fbc5](http://github.com/thoughtbot/shoulda-matchers/commit/8e7fbc553b292a47fa367a67272296a8f7fe229d "Explicitly name arguments"), [558d1df](http://github.com/thoughtbot/shoulda-matchers/commit/558d1df741e3bd5ab8bdd4129d583ab7dc829e51 "Polish failure messages"), and [00a9a68](http://github.com/thoughtbot/shoulda-matchers/commit/00a9a68fb172f7c13492f354f506220eecd4192d "Added QueryTheDatabaseMatcher
This matcher allows you to spec the number of database calls made by a
method.")).

Frank Luithle ([sigi](http://github.com/sigi)) extended the `allow_value` matcher to handle multiple values ([cab62a1](http://github.com/thoughtbot/shoulda-matchers/commit/cab62a1697cd1e8800ca8e3fc2b8851864975299 "allow multiple values for AllowValueMatcher

With the deprecation of &quot;should_allow_values_for&quot; there is currently no clean
way to specify multiple allowed (or forbidden) values for an attribute in a
single assertion. This can make test cases unnecessarily verbose.

This patch gives AllowValueMatcher the ability to take multiple values. The new
matcher is fully downward compatible (i.e. given a single argument it behaves
identically to the old matcher).

This matcher will stop checking for bad values when the first bad value is
encountered."), [c86d8e2](http://github.com/thoughtbot/shoulda-matchers/commit/c86d8e2e0c090aeff64dbf65872885bf5eda73c9 "remove a redundancy inside AllowValueMatcher"), and [026927b](http://github.com/thoughtbot/shoulda-matchers/commit/026927b324d67bb1e56b269b372c052479bb662f "optimize AllowValueMatcher slightly")).

Luca Guidi ([jodosha](http://github.com/jodosha)) updated our dependencies. Sweet. ([1956736](http://github.com/thoughtbot/shoulda-matchers/commit/195673659b3f081e74136424d025b926753ab502 "Bumped to latest dependencies"))

And last but not least, Mike Bloy ([bloy](http://github.com/bloy)) extended the association matchers to understand inverse relations and to check the correct class ([a4cb684](http://github.com/thoughtbot/shoulda-matchers/commit/a4cb684231db4a30f2be95460c10ddbc1b52ede2 "remove needless and confusing mock model detail"), [5c173bf](http://github.com/thoughtbot/shoulda-matchers/commit/5c173bf1b758b0376590c884dff92b4885576fb6 "test and bugfix for failing case"), and [ :User)

corrected by having have_one and have_many association tests check for an
:inverse_of on their association, and use the inverse relationship's
foreign key info if it can be found&quot;>c863f7e](http://github.com/thoughtbot/shoulda-matchers/commit/c863f7e6f00103b95a5be8234a2db9eb9bfc0f4d "association_matcher foreign_key refinement

https://github.com/thoughtbot/shoulda-matchers/issues/66

has_many and has_one tests failed with the reverse association has a
nonstandard name, (eg &quot;belongs_to :author, :class_name =")).

## capybara-webkit

The [capybara-webkit](https://github.com/thoughtbot/capybara-webkit) gem got a fix for the RSpec matcher from Chris Nicola ([lucisferre](https://github.com/chrisnicola)), possibly due to an <abbr title="Application Programming Interface">API</abbr> change elsewhere ([8fb7ccd](http://github.com/thoughtbot/capybara-webkit/commit/8fb7ccd089241f898d64a892be7c8873b7191443 "Fixes problem with RSpec matcher. Probably the RSpec <abbr title="Application Programming Interface">API</abbr> changed recently.

Changes are based on the documentation provided here:
http://rubydoc.info/gems/rspec-expectations/RSpec/Matchers")); Will Ryan added `keyCode` and `which` to the `keypress`, `keydown`, and `keyup` triggers ([c6103e7](https://github.com/thoughtbot/capybara-webkit/commit/c6103e75c11f691731515f7c9c36c5b1a4a2c5cc "add keyCode and which to keypress, keydown, and keyup") and [fb97fe8](https://github.com/thoughtbot/capybara-webkit/commit/fb97fe8577661d73ba715853ff39ef059ba2d30a "support for non-alpha characters for keyCode")); and Joe Ferris ([jferris](http://github.com/jferris)) refactored everything ([1ed54b1](http://github.com/thoughtbot/capybara-webkit/commit/1ed54b1d59e3e23edc181d8a6606f70a8b2a6385 "CommandParser accepts a CommandFactory and emits a Command"), [3ebe0fa](http://github.com/thoughtbot/capybara-webkit/commit/3ebe0fa577b1f0294906d8668691842e6ccccfbd "Rename confusing method"), [67d5e3d](http://github.com/thoughtbot/capybara-webkit/commit/67d5e3da0aa7405ffa99996217ffa93578487df8 "Keep a running command and a queued command instead of a running command and name/arguments"), [354180a](http://github.com/thoughtbot/capybara-webkit/commit/354180acb59dc8e5f20953ff8ef707e906fa7d1e "CommandFactory handles unknown commands by returning a NullCommand"), [85dcc72](http://github.com/thoughtbot/capybara-webkit/commit/85dcc729ddf04800b7efe6433ca1cca3d0d6e605 "Pass command arguments to the constructor"), and [5b57eee](http://github.com/thoughtbot/capybara-webkit/commit/5b57eee8c589634c9f3f9d081c42ec8a9a77c0ec "Simplify Visit")), plus stopped clearing the page on the URL `about:blank` ([b3b1adf](http://github.com/thoughtbot/capybara-webkit/commit/b3b1adf63f69642d4b6e41d7cdf80f3cc77a44ec "We don")).

## dotfiles

A bug fix to [dotfiles](https://github.com/thoughtbot/dotfiles) this week as Claudio Ortolina ([cloud8421](https://github.com/cloud8421)) changed the `.vimrc` to load the local configs from the homedir instead of just about anywhere ([9dc7f9c](http://github.com/thoughtbot/dotfiles/commit/9dc7f9c9f6ad5637c486ae42a1f9488ab9db96d3 "Fixes loading path for .vimrc.local")).

## appraisal

A feature in [appraisal](https://github.com/thoughtbot/appraisal) this week: Gregory Ostermayr ([gregors](http://github.com/gregors)) exposed the bundle command that Appraisal uses to install the Gemfile-specific gems ([6b41d07](http://github.com/thoughtbot/appraisal/commit/6b41d0780f327d1942c565140ebb4034d701c9e3 "add bundle command method") and [8023273](http://github.com/thoughtbot/appraisal/commit/8023273a764bbeec0ddb068c97e8080dabe0d398 "add test for bundle command creation")). Gabe Berke-Williams ([gabebw](http://github.com/gabebw)) stopped the tests from loading shoulda; instead it loads rake, which is already installed ([beaee3b](http://github.com/thoughtbot/appraisal/commit/beaee3b40f737c9df29fc1ed932a79e5a8eaa023 "Use a gem that we already depend on. Fixes #28.")).

## fake_braintree

The contribution guidelines were written for [fake_braintree](https://github.com/thoughtbot/fake_braintree) by Gabe Berke-Williams ([gabebw](http://github.com/gabebw)), which are mostly the same as our others ([bd5220a](http://github.com/thoughtbot/fake_braintree/commit/bd5220abb898c6e1bab94c9c16a0546dc5c04a3c "Update contribution guidelines.")). Namely, we love tests and pull requests.

## paperclip

Mostly quiet on the [paperclip](https://github.com/thoughtbot/paperclip) front, except Dmitry Polushkin ([dmitry](http://github.com/dmitry)) snuck a backward-incompatible change into the generated migration ([b7bfdec](http://github.com/thoughtbot/paperclip/commit/b7bfdec3b07cb348431510a3b400a40c110088c0 "Updated migration generator template.")).
