A N N O U N C I N G
Nano Methods, v0.8.1
Ruby's Atomic Extensions Library
ABSTRACT: Nano Methods is a cornicopia of extension methods for the
Ruby programming language. Nano's extensions are unique by virtue of
thier atomicity. Methods are stored in their own files, allowing for
highly granular control of requirements.
- & -
Mega Modules, v0.3.1
Ruby's Massive Class and Module Additions Library
ABSTRACT: Mega Modules is a large and growing collection of quality
classes amd modules suitable to a wide variety of applications.
INTRODUCTION. I'm happy to announce two new sister projects: Nano
Methods and Mega Modules. They are born from the heritage of the old
Ruby Facets project (now deprecated). In the course of the last several
months a slew of major improvements have been made. We have some spiffy
new websites and, most importantly, this release marks the beginning of
a clear window toward 1.0 status. Details of changes follow, but
GREAT NEWS! Nano Methods and Mega Modules are now the official support
libraries for Nitro and Og (http://www.nitrohq.com). Nitro is a
sophisticated Web Application Engine, and Og is an intuitive but
Object Relational Mapping Library.
FOR FACETS USERS. To upgrade, the project name change will require you
to change the #require path-space from 'facet/' to 'nano/', or
occasionally 'mega/'. The division is pretty clear, Nano stores methods
and Mega stores classes and modules. Sorry for the inconvenience, but
after a long debate I decided it was worth it --and better to do so now
rather then later. Hope you like the new names.
WHY MEGA? Okay, you may have noticed that I back peddled on the major
change of Facets 0.7.0. In that release I had merged the class and
additions library, Ruby Carats, into Facets. But I had to separate them
out again. It simply proved too cumbersome to have such a variety of
content all in one location. I am very excited the re-separation
It has already lent itself to major improvements to the library, with a
number of exciting additions on the way.
NANO SYSTEM. A great new feature is the introduction of the NanoSystem
module. This module provides access to meta-info about Nano's
extensions. Primarily it is an index of all the methods. With this
information at its disposal another unique way to require method
String.use :capitalized?, :underscore
I am not recommending this approach at the moment. But in the long run,
as the NanoSystem module matures, it may well prove to be a much more
elegant means of doing so.
CORNUCOPIA. There are also _a lot_ of minor changes in this release.
Some of them are simply improvements in the naming of methods or
more appropriate class/module placement. I've gone over all the
methods enough now to be confident that the present methods are pretty
well set. You can expect many fewer name/location changes from here on
out. Also, a good number of new methods have been added. Most of these
have managed to make mention of in the following ChangeLog summary.
* Class methods are now prefixed with '::' to separate them from
* Added logger #format and #format_message (Note: whomever wrote these
please let me know, I got them thru a second-hand source and the
author is lost to me. I try very hard to give credit where credit is
* Renamed object/supers to object/superup, which is just a better name.
* Got rid of symbol/gen. Use object/generate_method_name or
module#generate_instance_method_name instead. [ed- Is that the longest
non-foo method name ever?]
* The file 1st.rb file has moved to object/method!. This provides a
version of #method that persists the returned Method object.
* Added module/clone_using, module/clone_renaming and
* Added module/integrate (I love this one, but note that its syntax is
not yet set in stone.)
* Added many new enumerable methods: #filter_map, #compact_map,
#commonality, #frequency, #probability and #find_collisions.
* Moved some methods from array to enumerable: #each_permutation,
#each_combination, #each_unique_pair and the class method
* Added string/bytes per ruby-dev summary 26385-26467.
* Moved #cattr_reader, #cattr_writer and #cattr_accessor from Class to
Module. These are the class variable attributes as defined by Rails
* Added class instance attribute methods: iattr_reader, iatter_writer,
&c. The name of these are not set in stone. It's a bad misnomer.
* Added methods to comparable: #cap, #clip. #clip replaces #bound_by,
since 'by' generally indicates the method takes a block parameter. I
have retained #at_least and #at_most, although #cap and #clip handle
* Added class/descendants (alias subclasses) and
* Removed string/table_name and string/class_name (were too Rails
specific). Note: A new module has been added to Mega Modules, called
orm_inflect.rb. It contains numerous methods for doing this sort of
* Added numeric/ceil_multiple.
* Added string/soundex for calculating the soundex code of a word/name.
* numeric/octet_units has bee moved to mega/binary_multipliers, which
a rewrite of Richard Kilmer's bytes.rb. Actually #octet_units is now
just an alias or #strfbytes, accompanied by #strfbits.
* Placed Florian's binding-of-caller.rb in binding/of_caller. Makes
* Fixed Continuation::create; it wasn't defined as a class method and
should have been.
* Fixed bug with string/capitalized? which wasn't always giving the
There are others, but this particular session of development was
so rapid and choked full, I wasn't able to log them all. Please see
the API RDocs for a complete listing.
CONTRIBUTE. As always, if you have any extension methods that you use
and think may be of benefit to others, please submit them. There's a
good chance they'll be incorporated. Also, if you happen to notice any
code that is mis-credited or is not credited at all and should be,
please correct me. Giving credit where credit is due is _very_
to me. And, of course, please let me know if you come across any bugs.
You can contact me either privately or via ruby-talk.
Thanks and Enjoy,
Generated by Reap, a Rake-based Ruby Project Assistant.
Do you Ruby? (http://www.ruby-lang.org)