jqr-stale_object_destroyer 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1 +1,3 @@
1
+ v0.0.2. Added after_stale_object_error callback and per-controller setting of retry-attempts.
2
+
1
3
  v0.0.1. Initial extraction.
data/Manifest CHANGED
@@ -5,3 +5,4 @@ Manifest
5
5
  Rakefile
6
6
  README.rdoc
7
7
  spec/spec_helper.rb
8
+ stale_object_destroyer.gemspec
@@ -15,11 +15,10 @@ end
15
15
  class ActionController::Base
16
16
  class << self
17
17
  def process_with_destroyer(request, response)
18
- max = 5
19
- (1..max).each do |attempt|
18
+ (1..retry_attempts).each do |attempt|
20
19
  begin
21
20
  request.attempt = attempt
22
- request.last_attempt = attempt == max
21
+ request.last_attempt = attempt == retry_attempts
23
22
 
24
23
  return process_without_destroyer(request, response)
25
24
  rescue ActiveRecord::StaleObjectError => err
@@ -29,5 +28,25 @@ class ActionController::Base
29
28
  end
30
29
 
31
30
  alias_method_chain :process, :destroyer
31
+
32
+ # TODO: evaluate possibility of moving this to an instnace method
33
+ def retry_attempts
34
+ 1
35
+ end
32
36
  end
37
+
33
38
  end
39
+
40
+ class ActiveRecord::Base
41
+ define_callbacks :after_stale_object_error
42
+
43
+ def update_with_destroyer(*args)
44
+ begin
45
+ update_without_destroyer(*args)
46
+ rescue ActiveRecord::StaleObjectError => err
47
+ run_callbacks(:after_stale_object_error)
48
+ raise err
49
+ end
50
+ end
51
+ alias_method_chain :update, :destroyer
52
+ end
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{stale_object_destroyer}
5
- s.version = "0.0.1"
5
+ s.version = "0.0.2"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Elijah Miller"]
9
- s.date = %q{2009-02-11}
9
+ s.date = %q{2009-02-13}
10
10
  s.description = %q{An easy way to handle stale object errors in Rails by retrying the entire request.}
11
11
  s.email = %q{elijah.miller@gmail.com}
12
12
  s.extra_rdoc_files = ["CHANGELOG", "lib/stale_object_destroyer.rb", "README.rdoc"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jqr-stale_object_destroyer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elijah Miller
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-02-11 00:00:00 -08:00
12
+ date: 2009-02-13 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency