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

## bourbon

So this [bourbon](https://github.com/thoughtbot/bourbon) gem&hellip;people seem to like it: there was [a RailsCast about it](http://railscasts.com/episodes/330-better-sass-with-bourbon) and the principle author (Phil LaPier) will be speaking at [Frontend United](http://frontendunited.org/) about it.

This week people cleaned up the obsolete <abbr title="Cascading Style Sheets">CSS</abbr> attributes: Thibaut ([Thibaut](https://github.com/Thibaut)) removed `-moz-inline-block` ([d73ea46](http://github.com/thoughtbot/bourbon/commit/d73ea468afcfe8b0a08fb0a2d397bf61f4b51e4e "Merge pull request #67 from Thibaut/inline-block

    -moz-inline-block is obsolete")), Chad Mazzola removed both `-ms-border-radius` and `-o-border-radius` ([10a5908](http://github.com/thoughtbot/bourbon/commit/10a5908c39c007a1c0ebafc2a30a75924c52186d "Remove -ms and -o border-radius definitions.")), and Phil LaPier ([plapier](http://github.com/plapier)) removed `-moz-box-orient` ([6331e26](http://github.com/thoughtbot/bourbon/commit/6331e2626b2ff42486a70d28d919742f125bf091 "Removed -moz-box-orient")). Gabe Berke-Williams ([gabebw](http://github.com/gabebw)) fixed support for Rails 2 ([eacd5ee](http://github.com/thoughtbot/bourbon/commit/eacd5eeee6fbe25e06984660a225470be6329445 "bourbon:install task doesn") and [e9347e7](http://github.com/thoughtbot/bourbon/commit/e9347e7119ad64d6bc432dccd1e77bf8ae94dd6b "Don")) and, lesson learned, removed `Gemfile.lock` ([671ad33](http://github.com/thoughtbot/bourbon/commit/671ad33e3ce997e7ac0b981055edd07d7d87260e "Remove Gemfile.lock")).

## factory_bot[^1]

Version 2.6.3 of [factory_bot](https://github.com/thoughtbot/factory_bot) is out, all y'all. In this action-packed version we got a cucumber step named e.g. `Given the following post exists` (note the lack of `:` at the end), via cj ([cj](http://github.com/cj)) ([d4b8cac](http://github.com/thoughtbot/factory_bot/commit/d4b8cac70c4eeef30d150438138f2cd95bd2be05 "Made the : optional, to avoid issues.") and [48afe24](http://github.com/thoughtbot/factory_bot/commit/48afe244c61f466324759183663f71b04f52b2af "Test that table steps work without a trailing colon")). Barun Singh ([barunio](http://github.com/barunio)) fixed a bug where the factory's traits weren't compiled in the very first time the factory was used ([68ca50f](http://github.com/thoughtbot/factory_bot/commit/68ca50f4a6a2f05f200fb19432a59c77c2f35ee9 "fix FactoryRunner#run bug re: uncompiled factory")), plus a factory can use all the traits on any ancestor ([f14a8cf](http://github.com/thoughtbot/factory_bot/commit/f14a8cf2152776c5c6c307d15bde107ed299db83 "allow factories to use all ancestors")). Joshua Clayton ([joshuaclayton](http://github.com/joshuaclayton)) is now listed as an author ([07d2834](http://github.com/thoughtbot/factory_bot/commit/07d2834948a5703a5abfbeecbd179b9a0121e0d4 "Update gemspec authors and emails")), so congrats to him and his hard work. As part of that hard work he discovered that the vintage syntax broke in <abbr title="Matz' Ruby Interpreter">MRI</abbr> 1.9.2-p318, and then fixed it ([a7acc3e](http://github.com/thoughtbot/factory_bot/commit/a7acc3e33bd876b7d6a1f73fc9cb4393683a4942 "Namespace Factory as top-level; fixes FactoryBot for 1.9.2-p318")).

**This just in!** Version 3.0.0.rc1 is now public! It breaks everything, again! Please try it and [open issues](https://github.com/thoughtbot/factory_bot/issues) with what breaks:

    gem 'factory_bot', '3.0.0.rc1'

## bourne

Oh hey version 1.1.1 of [bourne](https://github.com/thoughtbot/bourne) is out ([650afb0](http://github.com/thoughtbot/bourne/commit/650afb093684da3b687d111f0ac2b1ca25429fbf "Bump to 1.1.1 for a 1.8.7-compatible release."))! Bourne is an extension to [mocha](https://rubygems.org/gems/mocha) that adds test spies so your tests can read like normal tests. Tristan Dunn ([tristandunn](http://github.com/tristandunn)) added support for mocha 0.10.5 ([286d8f9](http://github.com/thoughtbot/bourne/commit/286d8f9c1c37179ed5c5b5417dbf6385e1dc9608 "Mocha 0.10.5 compatibility.")) and fixed a long-standing error message that occurs when you forget to stub a method before spying on it ([17dc7d2](http://github.com/thoughtbot/bourne/commit/17dc7d2a114d227649016ae4d6e4286ef2902252 "Mention when a method with an expectation is unstubbed. Fixes #5.")).

Gabe Berke-Williams ([gabebw](http://github.com/gabebw)), who pushed the release, also did some maintainance: adding Travis CI notifications to the README ([7d6eb37](http://github.com/thoughtbot/bourne/commit/7d6eb37fb8f5d02d46624189b0dfb3d1812d9691 "Add Travis CI build status to README.")), removing `Gemfile.lock` ([950a445](http://github.com/thoughtbot/bourne/commit/950a445d72b76ba8c459b7df28b03579451bf5e2 "Remove Gemfile.lock.")), and some general code cleanups ([4bbe610](http://github.com/thoughtbot/bourne/commit/4bbe610c16c23cd41d0f0b82fc7dc99dff5882d9 "Push some logic into a method.") and [b0f1f99](http://github.com/thoughtbot/bourne/commit/b0f1f99512265961f7d7d120c89280b4e670827b "Remove post-statement if.")).

## shoulda-matchers

The big deal in [shoulda-matchers](https://github.com/thoughtbot/shoulda-matchers) over the past week was when Fujimura Daisuke ([fujimura](http://github.com/fujimura)) added the ability to specify the key for the flash message in the `set_the_flash` matcher ([0e0339e](http://github.com/thoughtbot/shoulda-matchers/commit/0e0339e943911a3673079a1349ae299305ebe4dd "Add flash type to expectation and description"), [ef866e2](http://github.com/thoughtbot/shoulda-matchers/commit/ef866e26744b22364d83652b796eac7b8b981c4e "Add SetTheFlashMatcher#[] to specify flash type"), and [fd4aa53](http://github.com/thoughtbot/shoulda-matchers/commit/fd4aa53382574f062cea9fc182564bce63d2b212 "Fix style.")):

    it { should set_the_flash[:alert].to("Password doesn't match") }

Gabe Berke-Williams ([gabebw](http://github.com/gabebw)) did his usual maintainance of converting the docs to use Markdown ([85c37c4](http://github.com/thoughtbot/shoulda-matchers/commit/85c37c4894d1afbebb065c3f7c8ca1888447325c "Convert README to Markdown.")), cleaning up the `ModelBuilder` that's used in the tests ([31595b0](http://github.com/thoughtbot/shoulda-matchers/commit/31595b027f13c1df083238c7c1a3cd1f7499f9ca "Slight refactor of model builder.")), and showing off how often our build is broken in the README using Travis CI ([eebb806](http://github.com/thoughtbot/shoulda-matchers/commit/eebb80621681bcaeda10a9cdafcc67e4bfffa246 "Add Travis-CI status to README.")), which he also did to [shoulda](https://github.com/thoughtbot/shoulda) proper ([7d805d0](http://github.com/thoughtbot/shoulda/commit/7d805d09b8c6563eae5b03ea2d36fb6f63445991 "Use https for Travis CI image.")).

## cocaine

Also victim to the Travis CI treatment was [cocaine](https://github.com/thoughtbot/cocaine), via Gabe Berke-Williams ([gabebw](http://github.com/gabebw)) again ([ac47b6f](http://github.com/thoughtbot/cocaine/commit/ac47b6fc3280b19510ead936126e687a7e61366c "Show correct Travis CI status.") and [490c406](http://github.com/thoughtbot/cocaine/commit/490c406293f142f7a35fa25afcafb333437390b2 "Add build status to README.")).

## paperclip

The [paperclip](https://github.com/thoughtbot/paperclip) project is gearing up for a groundbreaking (maybe app-breaking?) release, but in the meantime Mike Boone ([boone](http://github.com/boone)) fixed an infinitely-growing `PATH` environment variable ([06d69af](http://github.com/thoughtbot/paperclip/commit/06d69afb3a268af1988254b1c48931647f1af659 "Do not add duplicate paths to Cocaine::CommandLine.path for each run.")) while Mike Burns ([mike-burns](http://github.com/mike-burns))&mdash;also known as: me&mdash;totally broke backward compatibility by changing the default `:path` and `:url` configuration setting ([ &quot;:rails_root/public/system/:attachment/:id/:style/:filename&quot;,
      :url => &quot;/system/:attachment/:id/:style/:filename&quot;">26f4d40](http://github.com/thoughtbot/paperclip/commit/26f4d409b2a585c7708b4b33a007eb4c86b175c1 "Change the default :url and :path to avoid conflicts. Closes #727.

The new default :path and :include include the name of the model and
also nests the model ID under a series of subdirectories, improving
filesystem access speed when more than 1024 models have saved
attachments.

The easiest way to upgrade is to add an explicit :url and :path to your
has_attached_file calls:

    has_attached_file :avatar,
      :path =")). These new settings avoid overwriting files on different models and also scales to more than 1024 instances of the same model.

## capybara-webkit

In [capybara-webkit](https://github.com/thoughtbot/capybara-webkit) news, Joe Ferris ([jferris](http://github.com/jferris)) controversially allowed the user to interact with invisible elements ([02f2a8a](http://github.com/thoughtbot/capybara-webkit/commit/02f2a8ab73a2e69eb023ba1d48ee4000360cd213 "Allow interaction with invisible elements")), and caught the fact that `Capybara.timeout` is deprecated ([4d954b7](http://github.com/thoughtbot/capybara-webkit/commit/4d954b73f8cc658180a4a38430132d7f2b622402 "Use Timeout from stdlib since Capybara.timeout is being removed")).

[^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)
