success_repeater 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +3 -0
- data/Rakefile +9 -0
- data/lib/success_repeater/version.rb +1 -1
- data/lib/success_repeater.rb +12 -5
- data/success_repeater.gemspec +3 -1
- data/test/test_success_repeater.rb +23 -0
- metadata +27 -4
data/Gemfile
CHANGED
data/Rakefile
CHANGED
data/lib/success_repeater.rb
CHANGED
@@ -1,15 +1,20 @@
|
|
1
1
|
require "success_repeater/version"
|
2
|
+
require 'active_support/core_ext'
|
2
3
|
|
3
4
|
module SuccessRepeater
|
4
5
|
class Base
|
5
6
|
attr_accessor :max_seconds_run, :sleep_time
|
6
7
|
|
8
|
+
# @param [Hash{Symbol=>Object}] options
|
9
|
+
# == Example
|
10
|
+
# SuccessRepeater::Base.new(:max_seconds_run => 20.hours.to_i,
|
11
|
+
# :sleep_time => 10.minutes.to_i)
|
7
12
|
def initialize(options={})
|
8
13
|
options = options.reverse_merge(
|
9
|
-
:max_seconds_run => 20
|
10
|
-
:sleep_time =>
|
14
|
+
:max_seconds_run => 72000, # 20 hours
|
15
|
+
:sleep_time => 600 # 10minutes
|
11
16
|
)
|
12
|
-
@
|
17
|
+
@max_seconds_run = options[:max_seconds_run]
|
13
18
|
@sleep_time = options[:sleep_time]
|
14
19
|
end
|
15
20
|
|
@@ -49,8 +54,10 @@ module SuccessRepeater
|
|
49
54
|
|
50
55
|
def on_failure(e)
|
51
56
|
ExceptionNotifier::Notifier.background_exception_notification(e) if defined?(ExceptionNotifier::Notifier.background_exception_notification)
|
52
|
-
|
53
|
-
|
57
|
+
err_msg = "Succ repeater error #{e.backtrace.join("\n")}"
|
58
|
+
Rails.logger.error(err_msg) if defined?(Rails.logger.error)
|
59
|
+
puts err_msg
|
60
|
+
sleep(@sleep_time)
|
54
61
|
end
|
55
62
|
end
|
56
63
|
end
|
data/success_repeater.gemspec
CHANGED
@@ -18,6 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler", "~> 1.
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.0"
|
22
22
|
spec.add_development_dependency "rake"
|
23
|
+
spec.add_development_dependency "rails"
|
24
|
+
spec.add_development_dependency "test-unit"
|
23
25
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'success_repeater'
|
3
|
+
require 'test-unit'
|
4
|
+
|
5
|
+
class SuccessRepeaterBaseTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
def test_sleep
|
8
|
+
max_run = 10
|
9
|
+
t = SuccessRepeater::Base.new(:max_seconds_run=>max_run,
|
10
|
+
:sleep_time => 1)
|
11
|
+
start_at = DateTime.now
|
12
|
+
times = 0
|
13
|
+
t.run do
|
14
|
+
times += 1
|
15
|
+
error_cmd
|
16
|
+
end
|
17
|
+
finish_at = DateTime.now
|
18
|
+
exec_time = finish_at.to_i - start_at.to_i
|
19
|
+
assert(exec_time > max_run)
|
20
|
+
assert(exec_time < max_run + 4)
|
21
|
+
assert_equal(11, times)
|
22
|
+
end
|
23
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: success_repeater
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- luigi.sk
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ~>
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: "1.
|
23
|
+
version: "1.0"
|
24
24
|
type: :development
|
25
25
|
version_requirements: *id001
|
26
26
|
- !ruby/object:Gem::Dependency
|
@@ -34,6 +34,28 @@ dependencies:
|
|
34
34
|
version: "0"
|
35
35
|
type: :development
|
36
36
|
version_requirements: *id002
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rails
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: "0"
|
46
|
+
type: :development
|
47
|
+
version_requirements: *id003
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: test-unit
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: "0"
|
57
|
+
type: :development
|
58
|
+
version_requirements: *id004
|
37
59
|
description: repeat yield command in transaction until is executed successfully
|
38
60
|
email:
|
39
61
|
- luigi.sk@gmail.com
|
@@ -52,6 +74,7 @@ files:
|
|
52
74
|
- lib/success_repeater.rb
|
53
75
|
- lib/success_repeater/version.rb
|
54
76
|
- success_repeater.gemspec
|
77
|
+
- test/test_success_repeater.rb
|
55
78
|
homepage: https://github.com/luigi-sk/success-repeater
|
56
79
|
licenses:
|
57
80
|
- MIT
|
@@ -79,6 +102,6 @@ rubygems_version: 1.8.24
|
|
79
102
|
signing_key:
|
80
103
|
specification_version: 3
|
81
104
|
summary: devel
|
82
|
-
test_files:
|
83
|
-
|
105
|
+
test_files:
|
106
|
+
- test/test_success_repeater.rb
|
84
107
|
has_rdoc:
|