backgrounded 2.0.0.pre1 → 2.0.0.pre2

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/lib/backgrounded.rb CHANGED
@@ -2,29 +2,15 @@ require 'active_support/all'
2
2
 
3
3
  require File.join(File.dirname(__FILE__), 'backgrounded', 'handler', 'inprocess_handler')
4
4
  require File.join(File.dirname(__FILE__), 'backgrounded', 'proxy')
5
+ require File.join(File.dirname(__FILE__), 'backgrounded', 'concern')
6
+ require File.join(File.dirname(__FILE__), 'backgrounded', 'active_record_extension')
5
7
 
6
8
  module Backgrounded
7
- extend ActiveSupport::Concern
8
-
9
9
  class << self
10
10
  attr_accessor :logger, :handler
11
11
  end
12
-
13
- module ClassMethods
14
- def backgrounded(options={})
15
- Backgrounded::Proxy.new self, options
16
- end
17
- end
18
-
19
- # @param options (optional) options to pass into the backgrounded handler
20
- def backgrounded(options={})
21
- Backgrounded::Proxy.new self, options
22
- end
23
12
  end
24
13
 
25
- # include backgrounded into any ruby object
26
- Object.send(:include, Backgrounded)
27
-
28
14
  # default handler to the basic in process handler
29
15
  Backgrounded.handler = Backgrounded::Handler::InprocessHandler.new
30
16
 
@@ -0,0 +1,18 @@
1
+ require 'active_record/base'
2
+
3
+ module Backgrounded
4
+ module ActiveRecordExtension
5
+ extend ActiveSupport::Concern
6
+
7
+ module ClassMethods
8
+ # execute a method in the background after the object is committed to the database
9
+ # @option options [Hash] :backgrounded (optional) options to pass into the backgrounded handler
10
+ # @see after_commit
11
+ def after_commit_backgrounded(method_name, options={})
12
+ backgrounded_options = options.delete :backgrounded
13
+ after_commit Proc.new {|o| o.backgrounded(backgrounded_options).send(method_name) }, options
14
+ end
15
+ end
16
+ end
17
+ end
18
+ ActiveRecord::Base.send(:include, Backgrounded::ActiveRecordExtension)
@@ -0,0 +1,18 @@
1
+ module Backgrounded
2
+ module Concern
3
+ extend ActiveSupport::Concern
4
+
5
+ module ClassMethods
6
+ # @see Backgrounded::Concern#backgrounded
7
+ def backgrounded(options={})
8
+ Backgrounded::Proxy.new self, options
9
+ end
10
+ end
11
+
12
+ # @param options (optional) options to pass into the backgrounded handler
13
+ def backgrounded(options={})
14
+ Backgrounded::Proxy.new self, options
15
+ end
16
+ end
17
+ end
18
+ Object.send(:include, Backgrounded::Concern)
@@ -1,3 +1,3 @@
1
1
  module Backgrounded
2
- VERSION = "2.0.0.pre1"
2
+ VERSION = "2.0.0.pre2"
3
3
  end
@@ -0,0 +1,37 @@
1
+ require File.join(File.dirname(__FILE__), 'test_helper')
2
+
3
+ class ActiveRecordExtensionTest < Test::Unit::TestCase
4
+
5
+ class Blog < ActiveRecord::Base
6
+ after_commit_backgrounded :do_something_else
7
+ def do_something_else
8
+ end
9
+ end
10
+ class User < ActiveRecord::Base
11
+ after_commit_backgrounded :do_stuff, :backgrounded => {:priority => :high}
12
+ def do_stuff
13
+ end
14
+ end
15
+
16
+ context '.after_commit_backgrounded' do
17
+ should 'be defined on ActiveRecord::Base' do
18
+ assert ActiveRecord::Base.respond_to?(:after_commit_backgrounded)
19
+ end
20
+ context 'when using default options' do
21
+ setup do
22
+ @blog = Blog.new
23
+ @blog.expects(:do_something_else)
24
+ @blog.save
25
+ end
26
+ should 'execute callbacks' do end # see expectations
27
+ end
28
+ context 'when callback has :backgrounded options' do
29
+ setup do
30
+ Backgrounded.handler.expects(:request).with(anything, anything, anything, {:priority => :high})
31
+ @user = User.new
32
+ @user.save
33
+ end
34
+ should 'pass options onto the Backgrounded::Handler#request method' do end # see expectations
35
+ end
36
+ end
37
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backgrounded
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.pre1
4
+ version: 2.0.0.pre2
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-05-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: &2178080800 !ruby/object:Gem::Requirement
16
+ requirement: &2175352840 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.3.10
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2178080800
24
+ version_requirements: *2175352840
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &2178080260 !ruby/object:Gem::Requirement
27
+ requirement: &2175352300 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 2.3.10
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *2178080260
35
+ version_requirements: *2175352300
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: shoulda
38
- requirement: &2178079780 !ruby/object:Gem::Requirement
38
+ requirement: &2175351820 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *2178079780
46
+ version_requirements: *2175351820
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: mocha
49
- requirement: &2178079300 !ruby/object:Gem::Requirement
49
+ requirement: &2175351340 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *2178079300
57
+ version_requirements: *2175351340
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: sqlite3-ruby
60
- requirement: &2178078820 !ruby/object:Gem::Requirement
60
+ requirement: &2175350860 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.3.2
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *2178078820
68
+ version_requirements: *2175350860
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
- requirement: &2178078340 !ruby/object:Gem::Requirement
71
+ requirement: &2175350380 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,7 +76,7 @@ dependencies:
76
76
  version: 0.9.2.2
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *2178078340
79
+ version_requirements: *2175350380
80
80
  description: Execute any ActiveRecord Model method in the background
81
81
  email:
82
82
  - ryan@codecrate.com
@@ -92,10 +92,13 @@ files:
92
92
  - Rakefile
93
93
  - backgrounded.gemspec
94
94
  - lib/backgrounded.rb
95
+ - lib/backgrounded/active_record_extension.rb
96
+ - lib/backgrounded/concern.rb
95
97
  - lib/backgrounded/handler/inprocess_handler.rb
96
98
  - lib/backgrounded/handler/no_op_handler.rb
97
99
  - lib/backgrounded/proxy.rb
98
100
  - lib/backgrounded/version.rb
101
+ - test/active_record_extension_test.rb
99
102
  - test/backgrounded_test.rb
100
103
  - test/database.yml
101
104
  - test/proxy_test.rb
@@ -114,7 +117,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
117
  version: '0'
115
118
  segments:
116
119
  - 0
117
- hash: -2552094692552709134
120
+ hash: 2468636028347354976
118
121
  required_rubygems_version: !ruby/object:Gem::Requirement
119
122
  none: false
120
123
  requirements:
@@ -128,6 +131,7 @@ signing_key:
128
131
  specification_version: 3
129
132
  summary: Simple API to perform work in the background
130
133
  test_files:
134
+ - test/active_record_extension_test.rb
131
135
  - test/backgrounded_test.rb
132
136
  - test/database.yml
133
137
  - test/proxy_test.rb