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

## bourbon

One change to [bourbon](https://github.com/thoughtbot/bourbon) this week as Thibaut ([Thibaut](http://github.com/Thibaut)) removed the obsolete `-moz-inline-block` display type from the `inline-block` mixin ([de69a76](http://github.com/thoughtbot/bourbon/commit/de69a76ae87d0361355e3590fe3af01f6c5c7a15 "Remove obsolete -moz-inline-block from inline-block mixin.")).

## capybara-webkit

Version 0.10.1 of [capybara-webkit](https://github.com/thoughtbot/capybara-webkit) is out ([8f2cdef](http://github.com/thoughtbot/capybara-webkit/commit/8f2cdefd464ab7cbe4c240b995d1f32c366c22c4 "Bump version to 0.10.1")).  Matthew Mongeau ([halogenandtoast](http://github.com/halogenandtoast)) made it such that Swedes can install it on Måndag ([1a28da8](http://github.com/thoughtbot/capybara-webkit/commit/1a28da89addbf9fe111538e768e4b8a7e80b005e "Force LANG=")), Marc Schwieterman ([marcisme](https://github.com/marcisme)) improved the `generate_command` rake task to also handle the `CommandFactory.cpp` ([c15cd3a](https://github.com/marcisme/capybara-webkit/commit/6806dd6ce84a600ae40c4a2d560ccdbbc3d7ce5c "fix generate_command rake task")), and Joe Ferris ([jferris](http://github.com/jferris)) updated the link to our QT docs ([a4fcb8e](http://github.com/thoughtbot/capybara-webkit/commit/a4fcb8e0ed39649d77bae2a2714c2833f86f3e90 "Fixed Installing QT link")).

## cocaine

On [cocaine](https://github.com/thoughtbot/cocaine), which is a hell of a gem, Alban Peignier ([albanpeignier](http://github.com/albanpeignier)) exposed the command's exit status ([bfe0ba6](http://github.com/thoughtbot/cocaine/commit/bfe0ba6842721cc45c18fb44985c12a4bc3cc74a "Keep result code in Cocaine::CommandLine#exit_status")).

## factory_bot[^1]

Added to [factory_bot](https://github.com/thoughtbot/factory_bot) this week, though written two weeks ago, Joshua Clayton ([joshuaclayton](http://github.com/joshuaclayton)) replaced the AssociationRunner with what he calls the FactoryRunner, which can run any strategy ([4145a6e](http://github.com/thoughtbot/factory_bot/commit/4145a6e7448cbbe2de6e6986520bdf2a1074f6ce "Replace AssociationRunner with more generic FactoryRunner")).

On the [factory_bot_rails](https://github.com/thoughtbot/factory_bot_rails) side, Joshua Flanagan ([joshuaflanagan](http://github.com/joshuaflanagan)) added support for namespaced models, e.g. `Article::Comment` ([7df9c9b](http://github.com/thoughtbot/factory_bot_rails/commit/7df9c9b13a41f3410d979032aaff6831397f2c6f "Respect model namespaces when generating factories.

The factory name for the model Namespaced::User wil be :namespaced_user.
The :class option is specified as a string to prevent class reloading issues.

Addresses GH-44"))

## kumade

In [kumade](https://github.com/thoughtbot/kumade) this week Gabe Berke-Williams ([gabebw](http://github.com/gabebw)) fixed a completely broken rake task ([43ea8b8](http://github.com/thoughtbot/kumade/commit/43ea8b85d85ec3b6ca5d40e56dd3a15de62b68e0 "Fix rake task.")), discovered that `&&` reads more nicely than `and` ([50b8102](http://github.com/thoughtbot/kumade/commit/50b81024a18ac3ad0943aac086a5f75a467692f5 "Use `&&` instead of `and`.")), and removed the `Gemfile.lock` because everyone hated it ([278c8bf](http://github.com/thoughtbot/kumade/commit/278c8bf6b63b062995b79cb3d93648e36b8c2fe8 "Revert ")). SengMing Tan ([tansengming](https://github.com/tansengming)) changed the command-line program to produce false when the deployment fails, which means you can use it in more scripts ([7e37d61](https://github.com/thoughtbot/kumade/commit/779d67c56fe8e588a2a3f25c9d7a3d653aacf706 "fixed the CLI to exit with a non-zero status whenever deployment fails")). Klaus Hartl ([carhartl](http://github.com/carhartl)) fixed a bug with cedar, where restarting the app didn't work ([07e30d4](http://github.com/thoughtbot/kumade/commit/07e30d4152c87d48f740aa2893a8344fb7e24538 "fixing restart on cedar")).

## paperclip

As usual, a bunch of bugfixes and functionality made it into [paperclip](https://github.com/thoughtbot/paperclip) this week. Keep those pull requests coming!

Prem Sichanugrist ([sikachu](http://github.com/sikachu)) removed deprecated methods, which means you should watch for a major version bump soon. How exciting! ([defd425](http://github.com/thoughtbot/paperclip/commit/defd4259f293d3694f65494a0a78999a6ce263ba "Remove all the deprecated method

    We") and [9e38958](http://github.com/thoughtbot/paperclip/commit/9e389588740c04bd682704cfc835f428f624b7cf "Remove obsolete `aws/s3` stuff

`AWS::S3::Base.establish_connection!` is not on the `aws/sdk`, and this code doesn")). He and Gabe Berke-Williams ([gabebw](http://github.com/gabebw)) updated the README with stylistic and some content improvements ([4e4fa9d](http://github.com/thoughtbot/paperclip/commit/4e4fa9d46627c7dbc9ff541b6acc423acbbd2021 "Update README.md") and [5dba614](http://github.com/thoughtbot/paperclip/commit/5dba614c0bac6fa1a45690000a7c23b14ccdbf62 "Update README

Fixes #723")). Prem also fixed a bug where an RSpec matcher would run the post processing; that's wild ([0efa384](http://github.com/thoughtbot/paperclip/commit/0efa3843164158df669497e6f12ce5a80ea368f1 "Skip post processing on the size matcher

Fixes #646")).

Robert Pankowecki ([paneq](http://github.com/paneq)) improved the docs to show how to conditionally skip post processing ([49ddd12](http://github.com/thoughtbot/paperclip/commit/49ddd12cc2583bc4781ac29bc1019e3ff810abd5 "Updated ")). Jesse Cantara rewinds files after Paperclip is done with them, before handing them back to the user ([7cb7384](http://github.com/thoughtbot/paperclip/commit/7cb73846811b797fadfd8dca0917bafc7a06b84e "rewind files in flush_writes method of s3 and fog storage")). Beachbc ([beachbc](http://github.com/beachbc)) passed S3 creds as a lambda ([b89044f](http://github.com/thoughtbot/paperclip/commit/b89044fe49ca66d538b143b6f998cbc31bb36c34 "Added tests for passing S3 credentials as a proc.

    Fixes #738")), and Joshua Clayton ([joshuaclayton](http://github.com/joshuaclayton)) added a `:s3_url_options` option, which can be either a hash or a lambda that produces a hash, that allows the user to augment the image URL with params, but only if the image is stored in S3 ([ { :response_content_disposition => 'inline' }

Additionally, you can pass a lambda and it'll be evaluated when the URL
is generated. If, for example, the content type is incorrect in Amazon
(either empty or application/octet-stream), you can effectively cast the
response from Amazon as a particular content type.

    has_attached_file :avatar,
    :s3_url_options => lambda {|model| { :response_content_type => model.avatar_content_type } }">f7284b9](http://github.com/thoughtbot/paperclip/commit/f7284b9e497a326a5f8e5c02716a560958644e5b "Pass aditional parameters to S3 expiring urls

This adds functionality to add additional params to the querystring for
S3 expiring URLs. The reason for this is if you want to override
response_content_type or response_content_disposition with expiring
URLs, you have to change Amazon")). Josh, while making the aforementioned change, noticed that we were using shoulda oddly (!), so he moved the method definitions out from the contexts ([e64021e](http://github.com/thoughtbot/paperclip/commit/e64021e9755303ff7dc7d45ac908e65784a55e89 "Don")).

## shoulda

Speaking of [shoulda](https://github.com/thoughtbot/shoulda), version 3.0.1 is out, without any packaging issues ([62f5b82](http://github.com/thoughtbot/shoulda/commit/62f5b821c6eb1dc9614550ab6d21c31c06c53a3d "Bump to 3.0.1 because of a package issue")); this was discovered and fixed by Prem Sichanugrist ([sikachu](http://github.com/sikachu)). Prem also dropped Rubinius 2.0 support for shoulda-matchers  [94dbf74](http://github.com/thoughtbot/shoulda-matchers/commit/94dbf7455bb1f162736fb375bb8c46df32000357 "Change rbx-2.0 to rbx-18mode")). Blake Thomson ([thomsbg](https://github.com/thomsbg)) added a `validates_confirmation_of` matcher ([1b5fc27c](https://github.com/thoughtbot/shoulda-matchers/commit/1b5fc27cf8df2ab9e74259c1f853ae6fc8711e08 "Add validates_confirmation_of matcher")); Raphaël emourgeon ([osaris](https://github.com/osaris)) expanded the `have_sent_email` matcher to understand `reply_to` ([cabe44c7](https://github.com/thoughtbot/shoulda-matchers/commit/cabe44c712d7e8e7a0c7b493b4f29ac1e7f14afc "Add reply_to to HaveSentEmail matcher")); and Sylvestre Mergulhao ([mergulhao](https://github.com/mergulhao)) fixed the `allow_mass_assignment_of_matcher` documentation to be copy-pasteable ([3a75c687](https://github.com/thoughtbot/shoulda-matchers/commit/3a75c6877c07fbf62e77b1fb0aa852138bd537d6 "Fix typo on allow_mass_assignment_of_matcher documentation.")).

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