This week in open source

Mike Burns

bourbon

Another week of Sass mixins known as bourbon. Phil LaPier (plapier) gave the background-image mixin support for linear and radial gradients (f54da8f, 5e4cea2, b5d42a7, 36b678e, and a63dade). Sean Lynch fixed the webkit gradients on older devices (e46ba1e).

Matthew Burket (Mab879) fixed the README to point out that Rails 3.0.x is up to 3.0.10 now (098ef82). Matt Jankowski (mjankowski) added a bunch of people to the authors line of the gemspec (72cf1e7) and fixed an interpolation bug in the radial gradient (1fe6fce).

Phil and I had a talk about version numbers, after which Phil released version 1.0.4 of bourbon (1689cce, c994fcd, 07fe351, b67224f, and c6b2b73).

capybara-webkit

More pull requests and refactoring for capybara-webkit over the past week. Joe Ferris (jferris) simplified the Connection class by introducing a command factory and parser (b4708b2). Lake Denman (ldenman) spelled the word “version” correctly in the README ([25ff48a](http://github.com/thoughtbot/capybara-webkit/commit/25ff48a08a0d14112668a6439a4907d058e7ba3e “Merge pull request #186 from ldenman/master

Fix typo”)). Stephen Delano (sdelano) added support for unsupported content response headers (62e0ec1 and 06a4e95).

clearance

Busy week for the clearance user auth engine! On the documentation side, Dan Croak (croaky) updated the copyright out to 2011 (8001a77), updated the CHANGELOG (644421f), mentioned all possible override points (26933c5), and got explict about the dependencies you need to integrate the Cucumber tests in your app (d4df728). Neil Parikh (neilparikh) rewrote history, claiming the Clearance was extracted from Airbrake instead of Hoptoad (ff404c8). Gabe “typo fixer” Berke-Williams (gabebw) fixed the word “dependent” in the README (bb2e919).

Dan also took note of Cucumber’s removal of web_steps.rb, which many people think is fantastic, and removed mention of any steps defined there (ece4b10, e01f366, and [fef1fae](http://github.com/thoughtbot/clearance/commit/fef1fae52b7a503cd000ebfbd44ee244416c21b6 “Removing the dependency on:

  • features/stepdefinitions/websteps.rb
  • features/support/paths.rb
  • features/support/selectors.rb

The reason is Cucumber 1.1.0 removes these. They have their own reasons, which are solid:

https://github.com/cucumber/cucumber-rails/commit/f027440965b96b780e84e50dd47203a2838e8d7d”)). Keeping up with the rubygems gem he switched from rake/gempackagetask to rubygems/package_task (6759d6d). He also tried to start a fight over how appraisal functions by asking about ignoring appraised gemfile locks (8dde7b0). To finish it off, Dan released verion 0.13.0 of Clearance (b2995c8).

continuous_sprinkles

We had a Sprinkle script for setting up a continuous integration server, named continuous_sprinkles appropriately enough. We don’t use this, so Mike Burns (mike-burns) deprecated it (c7dab0a). Before doing so he pulled in a patch from Ezra Spier (ahhrrr) to update the RVM setup (2f1b8b).

factory_bot

There’s a whole blog post on factory_bot version 2.2 so I’ll be brief: Joshua Clayton (joshuaclayton) removed a bunch of unnecessary public methods such as #ignore (dc32fd6), #add_child (481ea09), #attributes (3bef858), #callbacks (7f42abe), and #attribute_defined? (39caed0). He refactored the #add_attribute method on a definition proxy (a50adda), standardized deprecation warnings (0c84876), moved the exception class definitions around (1153783), and allowed no block to be passed to the #ignore block (eb21a44). Justin Ko (justinko) rocked our faces with some test cleanups, including removing redundant “should"s in behavior descriptions (334b8a9), then followed up with the equally pleasing feature that removes the need to call #tap in order to modify your generated object with a block (f32651d). Vasiliy Ermolovich (nashby) updated the supplied step definitions to use FactoryBot.create_list instead of Fixnum#times (9fcd0b6). Joe Ferris (jferris) attempted to fix the link to the getting started documentation (f4ee363). Jeff Dutil (jdutil) cleaned up whitespace made by the fixture generator (d364e83).

Anyway, that’s a bunch of stuff, but the point is Josh wrote a blog post and released version 2.2.0 of FactoryBot (41f73b5).

flutie

Some sweet default styles, flutie, got a README update from Tom Crinson (MrJaba) mentioning the differences between Rails 3.1 and earlier versions (323026c).

kumade

Big refactoring on our Heroku deployer, kumade. Gabe Berke-Williams (gabebw) added an Outputter class, which knows how to output things. After much discussion he made this a part of the configuration and used the well-blogged-about dependency injection pattern to simplify tests. This outputter means that you could potentially add a GUI or Web outputter! Imagine the possibilities! JSON! AJAX! XMPP! BBQ! (342082a, bb95538, 3af22ce, 6d7c867, 92a4add). Along the way he fixed a failing spec (6359702), only deleted branches if they exist (f260e9e), and showed an error message when the deployment fails (c27f13f).

Matt Jankowski (mjankowski) updated the README’s copyright, license, and credits sections (acd2b6a) and then Gabe released version 0.5.0 of kumade (a28adea).

pacecar

Our collection of ActiveRecord scopes is pacecar. Ryan Sonnek (wireframe) fixed deprecation warnings that appear when you leave space between a method and the open parenthesis (bdca580 and 199ad67). Matt Jankowski (mjankowski) tested it on Rails 3.1.1 (3be3ad5) and then released version 1.5.2 of pacecar (f838a84).

paperclip

Ah paperclip, the file uploader gem for Rails. In the housekeeping area, Prem Sichanugrist (sikachu) fixed some stray whitespace (7ab5ba6) and regenerated the appraisal gemfiles (47a56c2); trafnar (trafnar) added more about URI obfuscation to the README (2b8526b); and Nick Quaranto (qrush) noted that #form_for needs <%= (d808aa6).

Feature-wise, Prem removed the Rails root from the default S3 storage ([4ecd5b1](http://github.com/thoughtbot/paperclip/commit/4ecd5b1d0568029209d8574819f1535b4729bf74 "Remove :rails_root/public/system from default URL of S3 storage

So instead of having:

http://s3.amazonaws.com/paperclip/var/www/foo.com/current/avatars/1/original/foo.jpg

because default path has the :rails_root, now you”)) and added an InterpolatedString class to handle URL escaping ([56e4135](http://github.com/thoughtbot/paperclip/commit/56e413590c9e9d7fc62311863295b779b55be071 “Avoid calling URI.escape in #url method, and use Paperclip::InterpolatedString

Paperclip::InterpolatedString will ensure that we”) and db60516).

shoulda-matchers

I finally got our collection of RSpec matchers to pass on my laptop: shoulda-matchers. So from Håkon Lerring (Hakon) we have a matcher for the :conditions option for associations (293b8aa); from Jeff Dutil (jdutil) we have a documentation fix for the have_readonly_attribute matcher (ea477b8); from Light Year Software, LLC (lightyear) we got a fix for validations_uniqueness_of with a non-string value (21fa1f1); and from Shalva Usubov (shaliko) we got another documentation fix to remove some duplication for the route matcher (3ee5e5f).

suspenders

The Rails template we use for starting new apps is suspenders. Harold Giménez (hgimenez) updated it to use Rails 3.1.1 (0504fa2) and along the way used the Ruby File class where possible to abstract out platform-dependent file path issues (45faf41), removed any explicit JavaScript caching (552c654), and no doubt noticed that the REPO command-line variable is undocumented so he added it himself to the CONTRIBUTING documentation (4025029).