success_repeater 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -2,3 +2,6 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in success_repeater.gemspec
4
4
  gemspec
5
+
6
+ gem 'rails'
7
+ gem 'test-unit'
data/Rakefile CHANGED
@@ -1 +1,10 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.libs << 'test'
7
+ end
8
+
9
+ desc "Run tests"
10
+ task :default => :test
@@ -1,3 +1,3 @@
1
1
  module SuccessRepeater
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -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.hours.to_i,
10
- :sleep_time => 10.minutes.to_i
14
+ :max_seconds_run => 72000, # 20 hours
15
+ :sleep_time => 600 # 10minutes
11
16
  )
12
- @max_hours_run = options[:max_seconds_run]
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
- Rails.logger.error("Succ repeater error #{e.backtrace.join("\n")}")
53
- sleep(sleep_time)
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
@@ -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.3"
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.2
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.3"
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: