diff options
Diffstat (limited to 'lib/mogilefs/mogilefs.rb')
-rw-r--r-- | lib/mogilefs/mogilefs.rb | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/mogilefs/mogilefs.rb b/lib/mogilefs/mogilefs.rb index b0bdc0d..cd6f7c6 100644 --- a/lib/mogilefs/mogilefs.rb +++ b/lib/mogilefs/mogilefs.rb @@ -84,11 +84,19 @@ class MogileFS::MogileFS < MogileFS::Client end # Enumerates keys, limited by optional +prefix+ - def each_key(prefix = "", &block) - after = nil + # +args+ may also be specified for an optional +:limit+ + # and +:after+ (default: nil) + def each_key(prefix = "", args = nil, &block) + after = limit = nil + if args + after = args[:after] + limit = args[:limit] + end begin - keys, after = list_keys(prefix, after, 1000, &block) - end while keys && keys[0] + keys, after = list_keys(prefix, after, limit || 1000, &block) + return unless keys && keys[0] + limit -= keys.size if limit + end while limit == nil || limit > 0 nil end |