Facets v2.9.3 released

Facets 2.9.3 has been released.

Facets is the premier collection of extension methods for the Ruby
programming language. Facets extensions are unique by virtue of thier
atomicity. They are stored in individual files allowing for highly
granular control of requirements. In addition, Facets includes a few
additional classes and mixins suitable to wide variety of applications.

Happy New Year! Ruby F.s kicks off the year with a 2.9.x release.
This release adds a number of new methods, a few general improvements
and bug fixes, a couple of deprecations and finally settles the project
down to a two-part core/standard project organization.


  • New Features

    • Add Hash#url_params. (Matt Kirk)
    • Add Enumerable#hashify. (Ronen Barzel)
    • Add String#briefcase, similar to #titlecase.
    • Add Kernel#hierarchical_send (better replacement for
    • Add Class#hierarchically, which supports #hierarchical_send.
    • Add Array#median, to get the sorted middle of an array.
    • Add Math#percentile and Math#median.
    • Add Instantiable mixin (returns from Mixers spin-off project).
    • Add Equitable mixin (returns from Mixers spin-off project).
    • Add Cloneable mixin (returns from Mixers spin-off project).
    • Add Array#each_pair and #each_value.
    • Add Numeric#positive? and #numeric?.
    • Add Method#* and #^ composition methods. (Mike B.)
    • Add back Fixnum::MAX and MIN constants.
    • Add Binding#with.
  • Improved Features

    • Improve FileUtils#amass to be more robust.
    • Improve String#snakecase to convert spaces to underscores.
    • Improve String#camelcase to convert spaces to “camels”.
    • Improve String#snakecase to not handle path names (use #pathize).
    • Improve String#camelcase to not handle module names (ise #modulize).
    • Improve Numeric#approx? bu using ratio.
  • Renamed Features

    • Rename Enumerable#has? to #incase?.
  • Bug Fixes

    • Fix Hash#rekey to keep default_proc.
    • Fix Binding#self to not be defined for Rubinius.
  • Deprecations

    • Deprecate Preinitializable mixin.
    • Deprecate main.rb, spun-off to main_like_module gem.
  • Implementation Details

    • Reconsolidated library into just two parts, core and standard.
    • The term “more” is just a synonym for “standard” now.
    • Relative requires are being used more extensively.
    • Collection scripts, e.g. require 'facets', are static.

Note, the website is a bit wonky right now. I’ll fix it up sometime this