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 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: