nifty-utils 1.0.8 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ed647a6e5da31152d8a3295a73a73c2b570d73ae
4
- data.tar.gz: 577aecf0562f1ce708f280a6d67c4d3d5f3bf3ca
3
+ metadata.gz: 5830c82f749532ed226146ff4c5212b409d7dbf3
4
+ data.tar.gz: f940f1e50c8a70acd8de64a3effd56554b5672e4
5
5
  SHA512:
6
- metadata.gz: dbb9adbabaeebe0e34909566afc7db2393d4b4a77e2ba4e62d5dad4c4bba354bc2821b001bf763d386540c92dafa1897a88383f3dcfeab7b1bfa7940e4cf9d6e
7
- data.tar.gz: cd1daea8f5b5233188a5aee2817bd2567b9ad51fcaaf563d5ff673511abedc1aa3011e853cc6f5bec0d89130d654ca008b94e8ab06f90b92ef3e0e5d9d256f22
6
+ metadata.gz: 771f362ad4217d746d21df368e8fbb1cd0a90242f0218893996e0b4da324f2a8db4cea526fde12f0ad32f3a0d510af630ed724b97224aa9a8308bfb5aa55f1ac
7
+ data.tar.gz: 4de7a80c3bb90b5a5860dafefc93f508872298fae2a632d54d06f95e390f106437a02c56a7f880a36add83fff6f328b4954feb24ee5e3bec9be6eb7aea72fdfd
@@ -1 +1,2 @@
1
- require 'nifty/utils/extensions/string'
1
+ require 'nifty/utils/extensions/object'
2
+ require 'nifty/utils/extensions/string'
@@ -0,0 +1,9 @@
1
+ require 'nifty/utils/until_with_max_attempts'
2
+
3
+ class Object
4
+
5
+ def until_with_max_attempts(*args, &block)
6
+ Nifty::Utils::UntilWithMaxAttempts.until(*args, &block)
7
+ end
8
+
9
+ end
@@ -0,0 +1,45 @@
1
+ module Nifty
2
+ module Utils
3
+ module UntilWithMaxAttempts
4
+
5
+ #
6
+ # The exception which will be raised if the maximum number of attempts
7
+ # is reached.
8
+ #
9
+ class MaxAttemptsReached < StandardError; end
10
+
11
+ #
12
+ # Like a usual while block but with a maximum attempt counter. Can be used
13
+ # like this
14
+ #
15
+ # Attempts.until proc { job.completed? }, :attempts => 10, :gap => 5 do
16
+ # puts "Waiting for job to complete..."
17
+ # end
18
+ #
19
+ # The proc is the condition which will be evaluated, :attempts sets the
20
+ # maximum number of times it will wait before raising an exception and :gap
21
+ # is the length of time in seconds to wait between each check.
22
+ #
23
+ def self.until(condition, options = {}, &block)
24
+ options[:attempts] ||= 10
25
+ count = 0
26
+ until condition.call
27
+
28
+ if count == options[:attempts]
29
+ raise MaxAttemptsReached, "Maximum attempts reached (#{options[:attempts]}) without success"
30
+ end
31
+
32
+ yield
33
+
34
+ count += 1
35
+
36
+ if options[:gap] && count < options[:attempts]
37
+ sleep options[:gap]
38
+ end
39
+
40
+ end
41
+ end
42
+
43
+ end
44
+ end
45
+ end
@@ -1,5 +1,5 @@
1
1
  module Nifty
2
2
  module Utils
3
- VERSION = '1.0.8'
3
+ VERSION = '1.0.9'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,18 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nifty-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.8
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Cooke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-02 00:00:00.000000000 Z
11
+ date: 2015-02-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
- description: A set of useful utilties for Rails applications
13
+ description: A set of useful utilties for Rails applications.
14
14
  email:
15
- - adam@niftyware.io
15
+ - adam@atechmedia.com
16
16
  executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
@@ -22,13 +22,16 @@ files:
22
22
  - lib/nifty/utils/active_record/inquirer.rb
23
23
  - lib/nifty/utils/active_record/random_string.rb
24
24
  - lib/nifty/utils/extensions/core.rb
25
+ - lib/nifty/utils/extensions/object.rb
25
26
  - lib/nifty/utils/extensions/string.rb
26
27
  - lib/nifty/utils/railtie.rb
27
28
  - lib/nifty/utils/random_string.rb
29
+ - lib/nifty/utils/until_with_max_attempts.rb
28
30
  - lib/nifty/utils/version.rb
29
31
  - lib/nifty/utils/view_helpers.rb
30
- homepage: https://github.com/niftyware/utils
31
- licenses: []
32
+ homepage: https://github.com/atech/nifty-utils
33
+ licenses:
34
+ - MIT
32
35
  metadata: {}
33
36
  post_install_message:
34
37
  rdoc_options: []
@@ -49,5 +52,5 @@ rubyforge_project:
49
52
  rubygems_version: 2.2.2
50
53
  signing_key:
51
54
  specification_version: 4
52
- summary: A set of useful utilties for Rails applications
55
+ summary: A collection of functions which expand upon ActiveRecord and ActionView.
53
56
  test_files: []