As a programmer I love the change that made it into version 1.3.6 (10f978d) of bourbon: Phil LaPier (plapier) added to work done by Frank (frankzilla) to add a monospaced font family, $monospace—with support for Bitstream Vera Sans Mono, my favorite monospace typeface (3467fe3 and c86e5687). Nice.
Friday saw a new release of paperclip (1cb40e3), in accordance with the prophecy. It contains Windows support, a bug fix, and two new features.
Prem Sichanugrist (sikachu) has been working on handling characters that are not URL-safe; to this end he added a :restricted_characters option to has_attached_file, with a default value of &$+,\/:;=?@<>\[\]\{\}\|\\\^~%# , which specifies characters to replace with an underscore, _ (8353518 and 604304e). Benjamin Hüttinger (maxigs) added the ability to pass a block, evaluated at runtime, for :fog_host, :bucket_name, and :fog_credential options (e049ec5, 2b562a9, 8742615, and 1c88a72).
The gem itself had problems installing on Windows because a bundled test made sure that filenames with question marks were handled fine; turns out this simply breaks on Windows. Even though no actual programmers use Windows, we removed the offending file (ed5cd9f). Jon Yurek (jyurek) fixed a long-standing bug where the RSpec matchers (validate_attachment_content_type, validate_attachment_presence, and validate_attachment_size) didn’t handle the :if argument they were supposed to handle (5d4ba62).
A new release of capybara-webkit is in the works, and this is what you’ll see in it: Matthew Mongeau (halogenandtoast) added the ability to trigger mousedown and mouseup events (51c4dfe and 16c1637) while Joe Ferris (jferris) has commands block until the page finishes loading (18607d0).
Oh sweet, a new version of clearance is out (6c0c070)! In it you’ll find support for Rails 3.2 from Gabe Berke-Williams (gabebw), mostly in following deprecation warnings (6e57d10). Some prodding from Matthew Daubert (MDaubs) prompted us to upgrade cucumber-rails to 1.1.1 (691e867 and 91f4675). Dan Hodge (danhodge) dropped a totally awesome change on us, abstracting out the User class into Clearance.configuration.user_model, which can be changed at runtime (085a9b6, a582eec, and fc6af70). Dude, that’s awesome.
Holy cow it’s version 0.2.0 of fake_braintree (0be2aea). In this Gabe Berke-Williams (gabebw) gave us the ability to specify a constant amount for a transaction (783719c), and mimics the behavior around customers with failing credit cards (a2ceb58).
No big news in factory_girl this week. Carlos Antonio da Silva (carlosantoniodasilva) updated the docs to mention that .stub is now .build_stubbed (08018f6). Michael Klishin (michaelklishin) fixed the build on Travis CI for Rails 3.2 by updating rubygems first (850116d). Joshua Clayton (joshuaclayton) found a spec that was not appropriately named, and fixed it (0d67a42).
While kumade did not see a deploy this week, it did see some feature improvements, some of which come with an API change.
The hook for running code just before deployment was originally run_predeploy_task but is now run_pre_deploy_task (764aebe). Chad Boyd (hoverlover) made this change so he could introduce the run_post_deploy_task, which is further exposed as kumade:post_deploy to Rake (da74087, f68a487, and 9679018).
Kumade now works with more stuff: Jammit 0.6.5 (ec63310) thanks to Vesa Vänskä (vesan), and Ruby 1.9.3 (8e73b90) thanks to Gabe Berke-Williams (gabebw).
Gabe also fiddled with some source code (7e0e11e, bb695b9 and 92aa8f4).
A small documentation update occured in copycopter_client by Joe Ferris (jferris), reminding us that you can leave the name of the controller or model off of the translation key only when using t from a view (6416897).
We have officially stopped maintaining the following open source products: limerick_rake, trout, shoulda-context, and jester. Do you want to take over any of them? Let us know!
The kumade Heroku deployer now has a rake task hook for running code before the deployment (8bd2824). This was done by Joshua Clayton (joshuaclayton) in the new version: 0.8.2 (52a9348).
The paul_revere notification gem has this sweet button to hide a notification. Ben Orenstein (r00k) changed the duration of this hiding from one day to one year (5a773d4).
Phil LaPier (plapier) has released version 1.3.1 of bourbon, the much-loved collection of sass mixins (e90113c). In this version we have a new syntax for animation shorthands, which means the old shorthands are deprecated (e6dcbf5, a6d3a32, 89cc340). Get it while it’s hot!
We have a gem that generates scopes for ActiveRecord objects, named pacecar, which you would love if you also love methods that magically appear. Matt Jankowski (mjankowski) released version 1.5.3 (06b5e8e) with support for Rails 3.1.3 and 3.0.11 (dcc30d4) and which treats decimals as numeric column types, giving you all the methods that you need for those, too (ff7bc67).
The oft-used paperclip file uploader gem hit version 2.5.0 (071c938) with a NEWS file describing the changes, written by Mike Burns (mike-burns). That’s me. I like writing about changes.
Jim Ryan (jimryan) changed paperclip to process any :original style before all others, which can be useful in case order matters (f56e863 and d3db7a1).
Nathan Hyde gave us a performance gain by only generating the file’s fingerprint if it can be persisted (9fb9255 and 4e07681).
Alexander Greim (iltempo) landed a feature on us: S3 headers can be set at runtime by passing a block as the value of the headers instead of a static hash (a83de65 and 7a8d1e6).
Steve Madsen (sjmadsen) found an edge case where if you set an attachment, save it, set a new atachment, save it, then refresh the missing styles using the rake task, it will crash. And he fixed it (dc53432).
And Jon Yurek (jyurek) finally fixed Paperclip::Attachment such that it no longer overrides the Ruby hash method with an unrelated one (3fd4c96).
As usual, factory_girl got way more commits than I want to read over in one sitting. For example: Simone Carletti (weppos) added a ruby version dependency to the Gemspec (e6e4d8b). He also fixed the link to our blog (11a79a0 and 30e13dd).
Things like that.
So on the feature front, Evan Larkin (elarkin) made it such that factories still work if you define a class that overrides the to_s class method (8b3ee85). Dmytrii Nagirniak (dnagir) added support for neo4j (5246fda and 591ec7a). Joshua Clayton (joshuaclayton) made it such that you can call methods that are on the object from within a factory definition (d918c1d).
More wishy-washily, Josh made a bunch of refactorings, the most important of which speeds up the whole product (f2e4138). You can read the rest of the refactorings as code with good commit messages: 2e2d490, 40242e9, 32ff41f, ac1df1d, a022dda, 1c7eab1, d9e0372, and b734b58.
The README was improved with the status of all the dependent gems (768dfaa), by Steve Richert (laserlemon). Daniel Schierbeck (dasch) fixed the formatting of sample code (1e82889).
In the end, Josh released version 2.4.0 (69957ea).
Matthew Mongeau (halogenandtoast) had fun taking in pull requests on capybara-webkit. Joe Fiorini (joefiorini) added the requested_url method that produces the URL after a pushState (7f907a0). Niklas Baumstark (niklasb) added submit and path methods (352823d, d07cf3d, 21f4b84, 83905bb, 4ceb874).
John Hume (duelinmarkers) added support for JRuby (0979db4). Pete Gieser (pgieser) fixed a double-escaping bug in URLs (fccb444).
Matthew Mongeau (halogenandtoast) fixed the link to the Capybara README (e2c103c) and linked to the mailing list (d8c640d), and Jo Liss (joliss) recommended bundle exec in more places (7fe06e9).
Our authentication system aptly named clearance got some love from Chad Pytel (cpytel) and Joe Ferris (jferris), resulting in the release of clearance 0.14.0 (5471159, 214d1dd, and 0dc43a6). The big deal is that the deny_access RSpec match and the flash messages were totally borked. They fixed it (2085f03, 23df300, and 160366e).
Version 0.1.1 of fake_braintree was released, in which Gabe Berke-Williams (gabebw) fixed a bug in the failure message for the have_accessor_for matcher (9d97aa6) and also refactored everything (0a45900, 59a7b60, 3daf2aa, 0f955c6, 3e8745f, bb1f339, 6d7d90c, ac0d550, d2f470e, 3c66129, 8cf7d9c, 157b2a7, 8f21376, 29429ef, e4cef67, 9928436, 94cca24, 7bd4e20, 2dde9ed, e775167, a72e31b, 57f3623, d580024, ad82f0e, 3385e12, cacb537, ae86ebe, c6cead6, a352f33, f7a6cf5, 9f1fb3b, 124706d, ef8b13a, and b20e318).
It was a refactoring week on kumade, the Heroku deployer. Gabe Berke-Williams and Josh Clayton refactored the Packager class, splitting it out into handlers for Jammit, Less, and no-op packagers (d854184). Then Gabe Berke-Williams (gabebw) went off on his own to introduce a CommandLine class, wrapping Cocaine with some Thor (0c3840d and 72424c0). Meanwhile Joshua Clayton (joshuaclayton) changed should_not have_received to should have_received.never (6652197).
Our app making gem, suspenders, saw some updates from Matt Jankowski (mjankowski): Rails 3.1 (10ac09a, 97881fc, 354321d, c8f8c85, and db08366), bourbon (d490b36), flutie (e0bab83), the Hoptoad → Airbrake name change (6def3d7), and tying together the asset pipeline (a4ce3e7 and c760a33).
We have a one-off announcement plugin for Rails, named paul_revere. Nick Quaranto (qrush) released version 0.2.1 (3574b40 and dfbf940).
Our collection of RSpec matchers, shoulda-matchers, is not passing on my laptop. Prem Sichanugrist (sikachu) built out the continuous integration tests more to attempt to clarify the issue (3d94390, 4450c86, 1a3aeec, 6785f59, f1f5e6d).
The SCSS gem, bourbon, saw actual words being used by Matt Jankowski (mjankowski) in the documentation (b8afdea), plus Phil LaPier (plapier) updated the docs with resources for investigating browser compatibility (35539c9). He also added this sweet variable, $all-text-inputs, representing all HTML5 textual inputs like color, date, phone, password, URL, and so on (d1def76 and fb299e6). To wrap it all up he released version 0.1.8 (f3046bd).
Lots of bug fixes in paperclip, the Rails image uploader plugin gem, this week. Cody Caughlan (ruckus) added S3 support for an HTTP proxy (4661cef). Denis Yagofarov (denyago) preserved the path set for the Cocaine gem (3a35ba9). Aditya Sanghi (asanghi) gave us a warning when two models save files to the same place on the filesystem (8d43e19). Daniel Evans (danielevans) removes the temporary file after it has been uploaded and processed (748332e). Edison (edison) added a feature where you can set the file system path based on a method in the model (996ca87 and 1738f3c).
Prem Sichanugrist (sikachu) then attacked some outstanding bugs: escape the URL (23cb822), handle a space leak where an array was growing by one for each request (d18d814), make the Interpolations.hash class method confirm to the expected signature for hash methods (e526c86), and preserve the filename for S3 attachments when we know the filename (522a53e).
Prem then did some refactoring, splitting the storage tests into individual unit tests (0ca98d1, d204c7d, 31d74d6), stubbing Cocaine (0a77f64), removing some noisy debugging (fd891e0), and cleaning up whitespace (825e1f1 and b2cac53). After all of this he released version 2.4.2 (9edeb01).
Features and refactorings were the name of the game for factory_girl, the fixture replacement for Rails. Joe Ferris and Josh Clayton fixed traits so now you can override attributes of them. They did this by refactoring attributes, introducing an intermediate Declaration object that knows how to compile down to a full factory (a154e64 and f8638b). Joe Ferris (jferris) made callbacks into first-class objects with validations (0f87ca3, ede051f, and 4d30663). Thomas Walpole (twalpole) fixed an inconsistency, ensuring that parent callbacks are called before child callbacks (27c4b21).
Oh man check this: Joel Meador (janxious) updated the ChangeLog (306e51b and 88cf88)! Joshua Clayton (joshuaclayton) went along with this, too (9c95a2) before releasing version 2.1.2 (58e75bc and c1360e).
The capybara-webkit test driver, which Joe presented about at Boston Ruby, continues to improve. Gabe Berke-Williams (gabebw) gave us a documentation edit (f493b22), while Matthew Mongeau (halogenandtoast) striped and normalized spaces for consistency with Selenium (6d92f35) and also added support for unknown content types (ff0a6e7, 9257fe3, and 353fe86)
Lots and lots of changes to kumade this week!
Gabe Berke-Williams (gabebw - that’s me!) cleaned up the code a bit (afb29cf, fda26ee, 39c0a32, 7e255bf, and 75403a7).
I switched the order of arguments to Git#initialize to match the rest of the gem
(62e9202).
I made a couple of minor changes to the specs
(8949cdc,
f1d82ed, and
7b5e6ea).
And, of course, some README fixes (1d40e91 and
2e66cb2).
I merged Marcos Tapajós’ (tapajos) pull request removing sample output, since it’s rapidly outdated (4d2b13e).
Marcos also fixed an issue where the deploy branch wasn’t deleted if the deploy failed (ba8a264). He also added Cocaine, thoughtbot’s CLI wrapper, to fix the problem of printing output to the terminal (866f946).
Harold Giménez (hgimenez) ensured good code quality and removed some mocks (bdbb486 and 28f79b2). I learned that begin/ensure will re-raise an error after the ensure block runs, while begin/rescue/end will swallow the error. Harold always brings the knowledge.
Jon Yurek (jyurek) added an awesome feature: automatic detection of an application’s stack (6bd53af and b65ca45). As of version 0.3.0, Marcos Tapajós (tapajos) removed the -c option (fbdb609) since kumade now autodetects the current stack. Jon also noticed that Travis CI doesn’t have 1.8.7-p249 and removed it (8e94343).
Joshua Clayton (joshuaclayton) sprang into action and renamed Runner to CLI
(e222538).
He also made kumade use autoload (c01085e). You can read more about autoload here.
Kumade development is happening fast, but that doesn’t mean you shouldn’t contribute! The fast pace means that most pull requests will get a response within a day, so whether it’s documentation or a new module, send in your changes!
Mike Burns (mike-burns) updated suspenders for Rails 3.1.0 this week.
jQuery is part of Rails 3.1.0, so he removed it (be26211).
Suspenders now uses the --database option to generate a Postgres database.yml (94010c2).
You can read more about the --database option at the Rails command line guide.
And finally, with Rails 3.1.0 in the Gemfile (3f06a65), we’re all set for Rails 3.1.0!
Matt Jankowski (mjankowski) worked on paul_revere, our “one off” announcement plugin. It’s now tested against Rails 3.0.10 and 3.1.0 (31bdfdd). He also converted the tests from Test::Unit to RSpec in commit 447808d, certainly a welcome change.
Mike Burns (mike-burns) told shoulda-matchers bug reporters where to stick it (0a70502).
bourbon, our set of vanilla Sass mixins, got some love this week.
Chris Lloyd (chrislloyd) removed some Bourbon mixins that wrote Sass into files, which also fixed some @import problems with Rails 3.1 (3c3ffcd).
Jeremy Raines (jraines) added documentation on using Bourbon outside of rails (5e005b9).
Our very own Phil LaPier (plapier) released version 0.1.6 (da56992) and then version 0.1.7 the next day (7afb43c). He also updated the readme.md (a lowercase filename, in a bold departure from the thoughtbot standard) (ea553ba).
And Matt Jankowski (mjankowski) has zero tolerance for made-up words (74b4450).
Matt Jankowski (mjankowski) converted high_voltage’s test to RSpec (4925fd5). (cdfa644) He updated the gem authors as well (7a110f5). The tests now run using an in-memory SQLite database (a689718). And the Rails 3.1 love continues with 3.1 tests using appraisal 4dd575d) and a version bump to 1.0.
Matt Jankowski (mjankowski) updated pacecar for Rails 3.1 (commit list) and updated the factories to use Factory Girl 2.0’s hot new syntax (f9ce3e5).
Matt Jankowski (mjankowski) did a bunch of work on flutie. He added appraisal (90aad4a) and body_class and page_title helpers (commit list). He also added a fix for Rails 3.1 stylesheet expansions (92718a0), and followed that up with a version bump to 1.2.5 (f70068e).
Matt also fixed flutie to run on Rails 3.1.0 this week. It now correctly uses the Rails 3.1 asset pipeline (commit list). Get version 1.3.1 while it’s hot!
paperclip had a good amount of activity this week.
Gabe Berke-Williams (gabebw - me again!) fixed a typo (ae781ac).
Prem Sichanugrist (sikachu) bumped the version to 2.4.1. This version brings a basic integration test (3131601), interoperability with Factory Girl 2.0 (d639d5e), removal of a duplicate test (cb6efaa), and set the logger to a Railsy logger if in Rails (37385dd).
Chris Oliver and Prem Sichanugrist fixed an incorrect option that was being passed to `file` (23cd662).
Gabe Berke-Williams (gabebw - me again!) made some documentation fixes to factory_girl (4d4b5d9 and db82ccc).
Stephan Eckardt and Josh Clayton added FactoryGirl.modify, which allows you to re-open defined Factories
(14b8245). This can be helpful when dealing with vendor-supplied factories, like from a gem.
Joshua Clayton (joshuaclayton) bumped FactoryGirl to 2.1.0 (386848d).
He also committed code to assign created_at for stubbed models (00503ee).
One very nice addition is FactoryGirl.reload, which clears all
defined factories and then reloads definitions (3798144).
Finally, Josh fixed up the documentation (661e8ff, 370d8a6, 7fd7d95, 1f0e2eb, 9bacd0c, and 0529a87)
Dan Croak (croaky) fixed up the thoughtbot dotfiles and made tmux announce itself as a 256-color terminal so that Vim color schemes look breathtakingly vibrant (dc4c65e).
Our own Dan Croak (croaky) changed clearance to put more dependencies in the gemspec (90ca670).
Mike Burns (mike-burns) added group support to appraisal (1df64a1).
Joshua Clayton (joshuaclayton) worked on factory_girl_rails, bumping the version to 1.2.0 (c7d54d2) and updating its dependency to factory_girl 2.1.0 (5518b91).