It may help to consider that notwithstanding its name, ipaddr.rb is a module
to perform operations on subnets.   Within it, IP addresses are converted to
subnets with all-ones netmasks.  So when handed something like
192.168.1.2/24, it has to decide what subnet was meant, and simply masks out
the host part to obtain subnet 192.168.1.0/24, which IMO is a reasonable
thing to do.  Specifying either 192.168.1.2 or 192.168.1.2/32 will result in
an object which will match only a single IP address.  If there was interest
in manipulating IP addresses with particular netmasks, then this would
indeed require a module with different functionality.

I would very much like to see a cidr method in ipaddr though.  Will have to
try to contact the maintainer.

Simon