diff options
author | Xavier Shay <xavier@rhnh.net> | 2014-07-30 20:00:31 -0700 |
---|---|---|
committer | Xavier Shay <xavier@rhnh.net> | 2014-07-30 20:39:53 -0700 |
commit | acac631cc9a8a0b72e8daf6ab8ad4b1f6f0667bf (patch) | |
tree | 2d08e6a4c44443201d3fe1c5f8b41aa6756b313d /activesupport/lib/active_support | |
parent | 29a6a17a11cd98f18ad46e882cc8f7fd669de59f (diff) | |
download | rails-acac631cc9a8a0b72e8daf6ab8ad4b1f6f0667bf.tar.gz rails-acac631cc9a8a0b72e8daf6ab8ad4b1f6f0667bf.tar.bz2 rails-acac631cc9a8a0b72e8daf6ab8ad4b1f6f0667bf.zip |
Raise a descriptive error if non-positive integer passed to in_groups_of.
This is more consistent than the current behaviour of raising a
`ZeroDivisionError: divided by 0` error when 0 is given, which can be
non-obvious especially if `in_groups_of` is part of a longer chain of
methods.
The negative case was ok - "ArgumentError: invalid slice size" - but
this error is clearer still.
Diffstat (limited to 'activesupport/lib/active_support')
-rw-r--r-- | activesupport/lib/active_support/core_ext/array/grouping.rb | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/array/grouping.rb b/activesupport/lib/active_support/core_ext/array/grouping.rb index 3529d57174..87ae052eb0 100644 --- a/activesupport/lib/active_support/core_ext/array/grouping.rb +++ b/activesupport/lib/active_support/core_ext/array/grouping.rb @@ -18,6 +18,11 @@ class Array # ["3", "4"] # ["5"] def in_groups_of(number, fill_with = nil) + if number.to_i <= 0 + raise ArgumentError, + "Group size must be a positive integer, was #{number.inspect}" + end + if fill_with == false collection = self else |