I don't think that #divide_by_subnets should divide the subnet when called with 0 or 1:
>> IP.new('192.168.0.0/24').divide_by_subnets(0)
=> [#<IP::V4 192.168.0.0/25>, #<IP::V4 192.168.0.128/25>]
>> IP.new('192.168.0.0/24').divide_by_subnets(1)
=> [#<IP::V4 192.168.0.0/25>, #<IP::V4 192.168.0.128/25>]
IMHO, IP.new('192.168.0.0/24').divide_by_subnets(1) should return [#<IP::V4 192.168.0.0/24>]
For divide_by_subnets(0), all bets are open but nil or [#<IP::V4 192.168.0.0/24>] sounds like reasonable choices.
Any opinions ?