Version 1.1.2 of bourne is out (fba748b), 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.
We’re trying out version 2.0.0, release candidate 1, of bourbon (0ec0115). So please, try it out and let us know what’s broken.
Out of nowhere, Gabe Berke-Williams (gabebw) changed the formatting of something (7ec8959).
But Phil LaPier (plapier) removed animation-basic (316f2a7), cleaned up the default padding for buttons (2a46225), changed the radial-gradient in a way I don’t totally understand (94506ea), added some shorthands for transition (3342577), removed the position mixin (4621347), and updated the README (5f1176d and f5cdfad).
Version 3.0.0 of factory_girl is out: read the blog post to know more. In summary: goodbye five-year-old Ruby 1.8, goodbye two-year-old Rails 2, goodbye four-year-old FactoryGirl syntax!
Minor cleanups to suspenders this week: Gabe Berke-Williams (gabebw) fixed some markdown (107b103) and Andy Waite (andyw8) removed some annoying whitespace probably left by someone using TextMate (32104f9) and noted the fact that you must be running Postgres while suspending (de20630).
In paul_revere news this week, Cameron Desautels (camdez) pointed out that controller helpers need to use the helper class method (3b74d84).
The shoulda gem got taken care of by Gabe Berke-Williams (gabebw) this week: the Rails test helpers use the installed shoulda-matchers and shoulda-context gems instead of the GitHub ones (6f3b7b4); the dependencies are updated to more recent versions, and the tests require the user of bundler now (34d9f4a); the Rakefile doesn’t present a clobber action, whatever that did (058724b); and the contribution guidelines now reflect the fact that we’ve wanted pull requests for the past three years (f75da74).
This week, Gabe decided to take all pull requests on shoulda-matchers over the past few…years. Gabe Berke-Williams (gabebw) also did a bunch of cleanup and maintainance (c10cf34, 31b140f, c27de41, 7d70805, 7950d00, 3d6b8a8, ff0d364, ca6d428, ba78ed0, 8724cd2, c493c40, f841805, 0746b79, 963a293, 65d6d1c, afaf72b, and 76127ea).
Norway’s own Håkon Lerring (Hakon) added as_instance_of to the serialize matcher (9b5e972, 3b891cf, and d9906d8). Hey Håkon, I’m moving to your neighboring country soon!
Matthew Daubert (MDaubs) added an odd query_the_database matcher, which could be useful for making sure a n+1 is good and dead (0ecb774, 93cd34e, 56de191, 8e7fbc5, 558d1df, and 00a9a68).
Frank Luithle (sigi) extended the allow_value matcher to handle multiple values (cab62a1, c86d8e2, and 026927b).
Luca Guidi (jodosha) updated our dependencies. Sweet. (1956736)
And last but not least, Mike Bloy (bloy) extended the association matchers to understand inverse relations and to check the correct class (a4cb684, 5c173bf, and c863f7e).
The capybara-webkit gem got a fix for the RSpec matcher from Chris Nicola (lucisferre), possibly due to an API change elsewhere (8fb7ccd); Will Ryan added keyCode and which to the keypress, keydown, and keyup triggers (c6103e7 and fb97fe8); and Joe Ferris (jferris) refactored everything (1ed54b1, 3ebe0fa, 67d5e3d, 354180a, 85dcc72, and 5b57eee), plus stopped clearing the page on the URL about:blank (b3b1adf).
A bug fix to dotfiles this week as Claudio Ortolina (cloud8421) changed the .vimrc to load the local configs from the homedir instead of just about anywhere (9dc7f9c).
A feature in appraisal this week: Gregory Ostermayr (gregors) exposed the bundle command that Appraisal uses to install the Gemfile-specific gems (6b41d07 and 8023273). Gabe Berke-Williams (gabebw) stopped the tests from loading shoulda; instead it loads rake, which is already installed (beaee3b).
The contribution guidelines were written for fake_braintree by Gabe Berke-Williams (gabebw), which are mostly the same as our others (bd5220a). Namely, we love tests and pull requests.
Mostly quiet on the paperclip front, except Dmitry Polushkin (dmitry) snuck a backward-incompatible change into the generated migration (b7bfdec).
Version 2.6.4 of factory_girl is out (b7f3789), with a bug fix from Ian Duggan (ijcd) such that you can use the name of a transient attribute when setting other attributes (0d7520e), and Joshua Clayton (joshuaclayton) reduced the number of times a factory assigns to an object, just in case mutation matters (f5d4db1).
Version 0.11.0 of capybara-webkit is out (464a7bf and 39be2c8). From David Reese (whatcould) we get support for the oninput trigger (fc5cba3); Moreno Carullo (morenocarullo) fixed compilation on 23-bit Microsoft Windows (f09ba15 and 4b044cc); James Tucker (raggi) forced the server to bind straight to localhost instead of the free-for-all it was previously (fc56a13).
Clearance 0.16.0 is out (4cacef5 and a01d81f), in which Chris Dillon (squarism) added Blowfish password encryption (1a779c8 and 40362e92). Wild.
Small stuff in shoulda shoulda-matchers over the past week, as Steve Richert (laserlemon) fixed the little image on our README that shows that the build is always broken (43a3cb7) and Gabe Berke-Williams (gabebw) cleaned up the test suite, using let instead of instance variables (f1a3dca, 62207b4, bb59b74).
In cocaine news, Brian Durand (bdurand) included an option to use the posix-spawn gem, potentially improving performance (aa36e45, 98dff3d, 2391d9f). Mike Burns (mike-burns) removed Gabe’s bundler config, ‘cause really (f77c1b5).
While drinking bourbon this week, Kyle Fiedler documented flex-grid (a85ce35), Frank (frankzilla) added a hide-text mixin to make it easier to hide some text, e.g. .image-to-be-replaced { @include hide-text } (3f736ea). Dylan Lacey threw more Ruby at the installation rake task, which brought cross-platform compatibility to the world (281ed16, ee78754, b853f14, 9b85a13, 8b7dec4, e4ed1b3).
Performance gains in paperclip this week as Luke Griffiths (Sporky023) and Mathieu Martin (webmat) switched from find to find_each (0c1e812, 32199e2, 35052eb). Mathieu also allowed in styles with numeric names (8edccdc). Matthias Viehweger (kronn) fixed a typo; thanks, Matthias (e927180)!
One month ago, we informed Copycopter customers that we would be shutting the service down on April 15th and they would no longer be charged.
This news triggered a domino effect across the internet. AOL followed up by shutting down Instant Messenger. Milk then shut down Oink and users are fretting that Posterous will shut down after its acquisition by Twitter.

Copycopter has worked beautifully for its purpose: editing live copy in Rails app using the I18n (internalization) API.
However, as a business, we try to make money and Copycopter has not served that purpose very well. So, we’ve been spending our time on other things.
It’s not really cool to run a service, then abruptly shut it down. We want to be awesome to our paying customers, many of whom still want to use the service.
Copycopter is fantastic if you’re into Rails, translations, and not editing code and deploying every time copy changes.
Open source code is the bee’s knees.
All the code has been moved over to the “copycopter” organization on Github. There, you’ll also find the Ruby client and a tight little style guide.
The fine folks at Crowdtap and Iora Health, two very strong Rails teams in New York and Boston, respectively.
They both use Copycopter for their own production apps.
Or, watch this instructional, holiday-themed screencast:
Thank you to all of Copycopter’s customers. We’re sorry we can no longer run the service but we’d be even sorrier if we gave you a half-assed effort.
We’re thrilled to be able to give Copycopter new life as an open source project and extremely grateful to the folks at Crowdtap and Iora Health for maintaining it.
We know them well from working together in the past. You might even call us friends.
Since open source is about people, you should get to know their handsome faces:
Get to the choppah!
Written by Dan Croak.
So this bourbon gem…people seem to like it: there was a RailsCast about it and the principle author (Phil LaPier) will be speaking at Frontend United about it.
This week people cleaned up the obsolete CSS attributes: Thibaut (Thibaut) removed -moz-inline-block (d73ea46), Chad Mazzola removed both -ms-border-radius and -o-border-radius (10a5908), and Phil LaPier (plapier) removed -moz-box-orient (6331e26). Gabe Berke-Williams (gabebw) fixed support for Rails 2 (eacd5ee and e9347e7) and, lesson learned, removed Gemfile.lock (671ad33).
Version 2.6.3 of factory_girl 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) (d4b8cac and 48afe24). Barun Singh (barunio) fixed a bug where the factory’s traits weren’t compiled in the very first time the factory was used (68ca50f), plus a factory can use all the traits on any ancestor (f14a8cf). Joshua Clayton (joshuaclayton) is now listed as an author (07d2834), so congrats to him and his hard work. As part of that hard work he discovered that the vintage syntax broke in MRI 1.9.2-p318, and then fixed it (a7acc3e).
This just in! Version 3.0.0.rc1 is now public! It breaks everything, again! Please try it and open issues with what breaks:
gem 'factory_girl', '3.0.0.rc1'
Oh hey version 1.1.1 of bourne is out (650afb0)! Bourne is an extension to mocha that adds test spies so your tests can read like normal tests. Tristan Dunn (tristandunn) added support for mocha 0.10.5 (286d8f9) and fixed a long-standing error message that occurs when you forget to stub a method before spying on it (17dc7d2).
Gabe Berke-Williams (gabebw), who pushed the release, also did some maintainance: adding Travis CI notifications to the README (7d6eb37), removing Gemfile.lock (950a445), and some general code cleanups (4bbe610 and b0f1f99).
The big deal in shoulda-matchers over the past week was when Fujimura Daisuke (fujimura) added the ability to specify the key for the flash message in the set_the_flash matcher (0e0339e, ef866e2, and fd4aa53):
it { should set_the_flash[:alert].to("Password doesn't match") }
Gabe Berke-Williams (gabebw) did his usual maintainance of converting the docs to use Markdown (85c37c4), cleaning up the ModelBuilder that’s used in the tests (31595b0), and showing off how often our build is broken in the README using Travis CI (eebb806), which he also did to shoulda proper (7d805d0).
Also victim to the Travis CI treatment was cocaine, via Gabe Berke-Williams (gabebw) again (ac47b6f and 490c406).
The paperclip project is gearing up for a groundbreaking (maybe app-breaking?) release, but in the meantime Mike Boone (boone) fixed an infinitely-growing PATH environment variable (06d69af) while Mike Burns (mike-burns)—also known as: me—totally broke backward compatibility by changing the default :path and :url configuration setting (26f4d40). These new settings avoid overwriting files on different models and also scales to more than 1024 instances of the same model.
In capybara-webkit news, Joe Ferris (jferris) controversially allowed the user to interact with invisible elements (02f2a8a), and caught the fact that Capybara.timeout is deprecated (4d954b7).
One change to bourbon this week as Thibaut (Thibaut) removed the obsolete -moz-inline-block display type from the inline-block mixin (de69a76).
Version 0.10.1 of capybara-webkit is out (8f2cdef). Matthew Mongeau (halogenandtoast) made it such that Swedes can install it on Måndag (1a28da8), Marc Schwieterman (marcisme) improved the generate_command rake task to also handle the CommandFactory.cpp (c15cd3a), and Joe Ferris (jferris) updated the link to our QT docs (a4fcb8e).
On cocaine, which is a hell of a gem, Alban Peignier (albanpeignier) exposed the command’s exit status (bfe0ba6).
Added to factory_girl this week, though written two weeks ago, Joshua Clayton (joshuaclayton) replaced the AssociationRunner with what he calls the FactoryRunner, which can run any strategy (4145a6e).
On the factory_girl_rails side, Joshua Flanagan (joshuaflanagan) added support for namespaced models, e.g. Article::Comment (7df9c9b)
In kumade this week Gabe Berke-Williams (gabebw) fixed a completely broken rake task (43ea8b8), discovered that && reads more nicely than and (50b8102), and removed the Gemfile.lock because everyone hated it (278c8bf). SengMing Tan (tansengming) changed the command-line program to produce false when the deployment fails, which means you can use it in more scripts (7e37d61). Klaus Hartl (carhartl) fixed a bug with cedar, where restarting the app didn’t work (07e30d4).
As usual, a bunch of bugfixes and functionality made it into paperclip this week. Keep those pull requests coming!
Prem Sichanugrist (sikachu) removed deprecated methods, which means you should watch for a major version bump soon. How exciting! (defd425 and 9e38958). He and Gabe Berke-Williams (gabebw) updated the README with stylistic and some content improvements (4e4fa9d and 5dba614). Prem also fixed a bug where an RSpec matcher would run the post processing; that’s wild (0efa384).
Robert Pankowecki (paneq) improved the docs to show how to conditionally skip post processing (49ddd12). Jesse Cantara rewinds files after Paperclip is done with them, before handing them back to the user (7cb7384). Beachbc (beachbc) passed S3 creds as a lambda (b89044f), and Joshua Clayton (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 (f7284b9). Josh, while making the aforementioned change, noticed that we were using shoulda oddly (!), so he moved the method definitions out from the contexts (e64021e).
Speaking of shoulda, version 3.0.1 is out, without any packaging issues (62f5b82); this was discovered and fixed by Prem Sichanugrist (sikachu). Prem also dropped Rubinius 2.0 support for shoulda-matchers 94dbf74). Blake Thomson (thomsbg) added a validates_confirmation_of matcher (1b5fc27c); Raphaël emourgeon (osaris) expanded the have_sent_email matcher to understand reply_to (cabe44c7); and Sylvestre Mergulhao (mergulhao) fixed the allow_mass_assignment_of_matcher documentation to be copy-pasteable (3a75c687).