aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib
diff options
context:
space:
mode:
authorXavier Shay <xavier@rhnh.net>2014-07-30 20:00:31 -0700
committerXavier Shay <xavier@rhnh.net>2014-07-30 20:39:53 -0700
commitacac631cc9a8a0b72e8daf6ab8ad4b1f6f0667bf (patch)
tree2d08e6a4c44443201d3fe1c5f8b41aa6756b313d /activesupport/lib
parent29a6a17a11cd98f18ad46e882cc8f7fd669de59f (diff)
downloadrails-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')
-rw-r--r--activesupport/lib/active_support/core_ext/array/grouping.rb5
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