backgrounded 0.7.3 → 0.7.4

Sign up to get free protection for your applications and to get access to all the features.
data/.rvmrc ADDED
@@ -0,0 +1,5 @@
1
+ rvm use ree-1.8.7@backgrounded --create
2
+ if ! command -v bundle ; then
3
+ gem install bundler
4
+ bundle install --local
5
+ fi
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
22
22
  s.add_development_dependency(%q<mocha>, [">= 0"])
23
23
  s.add_development_dependency(%q<sqlite3-ruby>, [">= 1.3.2"])
24
24
  s.add_development_dependency(%q<delayed_job>, [">= 2.1.4"])
25
- # s.add_development_dependency(%q<ruby-debug>, [">= 0"])
25
+ s.add_development_dependency(%q<rake>, [">= 0.9.2.2"])
26
26
 
27
27
  s.files = `git ls-files`.split("\n")
28
28
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -8,6 +8,10 @@ Object.send(:include, Backgrounded::ClassMethods)
8
8
  module Backgrounded
9
9
  class << self
10
10
  attr_accessor :logger, :handler
11
+ def method_name_for_backgrounded_options(method_name)
12
+ method_basename, punctuation = method_name.to_s.sub(/([?!=])$/, ''), $1
13
+ "#{method_basename}_backgrounded_options"
14
+ end
11
15
  end
12
16
  end
13
17
 
@@ -7,14 +7,13 @@ module Backgrounded
7
7
  methods_with_options.each_pair do |method, options|
8
8
  method_basename, punctuation = method.to_s.sub(/([?!=])$/, ''), $1
9
9
  backgrounded_method = "#{method_basename}_backgrounded#{punctuation}"
10
- backgrounded_options_method = "#{method_basename}_backgrounded_options"
11
10
  class_eval do
12
11
  define_method backgrounded_method do |*args|
13
12
  Backgrounded.logger.debug("Requesting #{Backgrounded.handler} backgrounded method: #{method} for instance #{self}")
14
13
  Backgrounded.handler.request(self, method, *args)
15
14
  nil
16
15
  end
17
- define_method backgrounded_options_method do
16
+ define_method Backgrounded.method_name_for_backgrounded_options(method) do
18
17
  options
19
18
  end
20
19
  end
@@ -5,10 +5,11 @@ module Backgrounded
5
5
  #enque requests in resque
6
6
  class ResqueHandler
7
7
  DEFAULT_QUEUE = 'backgrounded'
8
+ INVALID_ID = -1
8
9
  @@queue = DEFAULT_QUEUE
9
10
 
10
11
  def request(object, method, *args)
11
- options = object.send("#{method.to_s.sub(/([?!=])$/, '')}_backgrounded_options")
12
+ options = object.send Backgrounded.method_name_for_backgrounded_options(method)
12
13
  @@queue = options[:queue] || DEFAULT_QUEUE
13
14
  instance, id = instance_identifiers(object)
14
15
  Resque.enqueue(ResqueHandler, instance, id, method, *args)
@@ -23,11 +24,11 @@ module Backgrounded
23
24
  private
24
25
  def self.find_instance(clazz, id, method)
25
26
  clazz = clazz.constantize
26
- clazz.respond_to?(method) ? clazz : clazz.find(id)
27
+ id.to_i == INVALID_ID ? clazz : clazz.find(id)
27
28
  end
28
29
  def instance_identifiers(object)
29
30
  instance, id = if object.is_a?(Class)
30
- [object.name, -1]
31
+ [object.name, INVALID_ID]
31
32
  else
32
33
  [object.class.name, object.id]
33
34
  end
@@ -1,5 +1,6 @@
1
1
  class Backgrounded::Handler::WorklingHandler
2
2
  class BackgroundedWorker < Workling::Base
3
+ INVALID_ID = -1
3
4
  def perform(options = {})
4
5
  find_instance(options[:class], options[:id], options[:method]).send(options[:method], *options[:params])
5
6
  end
@@ -7,7 +8,7 @@ class Backgrounded::Handler::WorklingHandler
7
8
  private
8
9
  def find_instance(clazz, id, method)
9
10
  clazz = clazz.constantize
10
- clazz.respond_to?(method) ? clazz : clazz.find(id)
11
+ id.to_i == INVALID_ID ? clazz : clazz.find(id)
11
12
  end
12
13
  end
13
14
 
@@ -25,7 +26,7 @@ class Backgrounded::Handler::WorklingHandler
25
26
  private
26
27
  def instance_identifiers(object)
27
28
  instance, id = if object.is_a?(Class)
28
- [object.name, -1]
29
+ [object.name, INVALID_ID]
29
30
  else
30
31
  [object.class.name, object.id]
31
32
  end
@@ -1,3 +1,3 @@
1
1
  module Backgrounded
2
- VERSION = "0.7.3"
2
+ VERSION = "0.7.4"
3
3
  end
@@ -3,6 +3,10 @@ require 'backgrounded/handler/resque_handler'
3
3
  require 'resque_unit'
4
4
 
5
5
  ActiveRecord::Schema.define(:version => 1) do
6
+ create_table :blogs, :force => true do |t|
7
+ t.column :name, :string
8
+ end
9
+
6
10
  create_table :users, :force => true do |t|
7
11
  t.column :name, :string
8
12
  end
@@ -34,6 +38,9 @@ class ResqueHandlerTest < Test::Unit::TestCase
34
38
  def do_stuff
35
39
  end
36
40
  end
41
+ backgrounded :do_stuff
42
+ def do_stuff
43
+ end
37
44
  end
38
45
 
39
46
  context 'when backgrounded is configured with resque' do
@@ -60,6 +67,24 @@ class ResqueHandlerTest < Test::Unit::TestCase
60
67
  should "invoke method on class" do end #see expectations
61
68
  end
62
69
  end
70
+ context 'with an instance level backgrounded method of the same name' do
71
+ setup do
72
+ @blog = Blog.create
73
+ @blog.do_stuff_backgrounded
74
+ end
75
+ should "enqueue instance method job to resque" do
76
+ assert_queued Backgrounded::Handler::ResqueHandler, [Blog.to_s, @blog.id, 'do_stuff']
77
+ assert_equal Backgrounded::Handler::ResqueHandler::DEFAULT_QUEUE, Resque.queue_from_class(Backgrounded::Handler::ResqueHandler)
78
+ end
79
+ context "running background job" do
80
+ setup do
81
+ Blog.expects(:do_stuff).never
82
+ Blog.any_instance.expects(:do_stuff)
83
+ Resque.run!
84
+ end
85
+ should "invoke method on instance" do end #see expectations
86
+ end
87
+ end
63
88
  end
64
89
 
65
90
  context 'a persisted object with a single backgrounded method' do
metadata CHANGED
@@ -1,8 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backgrounded
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 11
4
5
  prerelease:
5
- version: 0.7.3
6
+ segments:
7
+ - 0
8
+ - 7
9
+ - 4
10
+ version: 0.7.4
6
11
  platform: ruby
7
12
  authors:
8
13
  - Ryan Sonnek
@@ -10,96 +15,149 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-06-02 00:00:00 Z
18
+ date: 2012-01-18 00:00:00 Z
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
- name: activerecord
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
21
+ version_requirements: &id001 !ruby/object:Gem::Requirement
19
22
  none: false
20
23
  requirements:
21
24
  - - ">="
22
25
  - !ruby/object:Gem::Version
26
+ hash: 23
27
+ segments:
28
+ - 2
29
+ - 3
30
+ - 10
23
31
  version: 2.3.10
32
+ requirement: *id001
33
+ prerelease: false
34
+ name: activerecord
24
35
  type: :runtime
25
- version_requirements: *id001
26
36
  - !ruby/object:Gem::Dependency
27
- name: activesupport
28
- prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
37
+ version_requirements: &id002 !ruby/object:Gem::Requirement
30
38
  none: false
31
39
  requirements:
32
40
  - - ">="
33
41
  - !ruby/object:Gem::Version
42
+ hash: 23
43
+ segments:
44
+ - 2
45
+ - 3
46
+ - 10
34
47
  version: 2.3.10
48
+ requirement: *id002
49
+ prerelease: false
50
+ name: activesupport
35
51
  type: :runtime
36
- version_requirements: *id002
37
52
  - !ruby/object:Gem::Dependency
38
- name: shoulda
39
- prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
53
+ version_requirements: &id003 !ruby/object:Gem::Requirement
41
54
  none: false
42
55
  requirements:
43
56
  - - ">="
44
57
  - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
45
61
  version: "0"
62
+ requirement: *id003
63
+ prerelease: false
64
+ name: shoulda
46
65
  type: :development
47
- version_requirements: *id003
48
66
  - !ruby/object:Gem::Dependency
49
- name: resque
50
- prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
67
+ version_requirements: &id004 !ruby/object:Gem::Requirement
52
68
  none: false
53
69
  requirements:
54
70
  - - ">="
55
71
  - !ruby/object:Gem::Version
72
+ hash: 89
73
+ segments:
74
+ - 0
75
+ - 17
76
+ - 1
56
77
  version: 0.17.1
78
+ requirement: *id004
79
+ prerelease: false
80
+ name: resque
57
81
  type: :development
58
- version_requirements: *id004
59
82
  - !ruby/object:Gem::Dependency
60
- name: resque_unit
61
- prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
83
+ version_requirements: &id005 !ruby/object:Gem::Requirement
63
84
  none: false
64
85
  requirements:
65
86
  - - ">="
66
87
  - !ruby/object:Gem::Version
88
+ hash: 29
89
+ segments:
90
+ - 0
91
+ - 3
92
+ - 7
67
93
  version: 0.3.7
94
+ requirement: *id005
95
+ prerelease: false
96
+ name: resque_unit
68
97
  type: :development
69
- version_requirements: *id005
70
98
  - !ruby/object:Gem::Dependency
71
- name: mocha
72
- prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
99
+ version_requirements: &id006 !ruby/object:Gem::Requirement
74
100
  none: false
75
101
  requirements:
76
102
  - - ">="
77
103
  - !ruby/object:Gem::Version
104
+ hash: 3
105
+ segments:
106
+ - 0
78
107
  version: "0"
108
+ requirement: *id006
109
+ prerelease: false
110
+ name: mocha
79
111
  type: :development
80
- version_requirements: *id006
81
112
  - !ruby/object:Gem::Dependency
82
- name: sqlite3-ruby
83
- prerelease: false
84
- requirement: &id007 !ruby/object:Gem::Requirement
113
+ version_requirements: &id007 !ruby/object:Gem::Requirement
85
114
  none: false
86
115
  requirements:
87
116
  - - ">="
88
117
  - !ruby/object:Gem::Version
118
+ hash: 31
119
+ segments:
120
+ - 1
121
+ - 3
122
+ - 2
89
123
  version: 1.3.2
124
+ requirement: *id007
125
+ prerelease: false
126
+ name: sqlite3-ruby
90
127
  type: :development
91
- version_requirements: *id007
92
128
  - !ruby/object:Gem::Dependency
93
- name: delayed_job
94
- prerelease: false
95
- requirement: &id008 !ruby/object:Gem::Requirement
129
+ version_requirements: &id008 !ruby/object:Gem::Requirement
96
130
  none: false
97
131
  requirements:
98
132
  - - ">="
99
133
  - !ruby/object:Gem::Version
134
+ hash: 3
135
+ segments:
136
+ - 2
137
+ - 1
138
+ - 4
100
139
  version: 2.1.4
140
+ requirement: *id008
141
+ prerelease: false
142
+ name: delayed_job
143
+ type: :development
144
+ - !ruby/object:Gem::Dependency
145
+ version_requirements: &id009 !ruby/object:Gem::Requirement
146
+ none: false
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ hash: 11
151
+ segments:
152
+ - 0
153
+ - 9
154
+ - 2
155
+ - 2
156
+ version: 0.9.2.2
157
+ requirement: *id009
158
+ prerelease: false
159
+ name: rake
101
160
  type: :development
102
- version_requirements: *id008
103
161
  description: Execute any ActiveRecord Model method in the background
104
162
  email:
105
163
  - ryan@codecrate.com
@@ -111,6 +169,7 @@ extra_rdoc_files: []
111
169
 
112
170
  files:
113
171
  - .gitignore
172
+ - .rvmrc
114
173
  - Gemfile
115
174
  - LICENSE
116
175
  - README.rdoc
@@ -144,17 +203,23 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
203
  requirements:
145
204
  - - ">="
146
205
  - !ruby/object:Gem::Version
206
+ hash: 3
207
+ segments:
208
+ - 0
147
209
  version: "0"
148
210
  required_rubygems_version: !ruby/object:Gem::Requirement
149
211
  none: false
150
212
  requirements:
151
213
  - - ">="
152
214
  - !ruby/object:Gem::Version
215
+ hash: 3
216
+ segments:
217
+ - 0
153
218
  version: "0"
154
219
  requirements: []
155
220
 
156
221
  rubyforge_project: backgrounded
157
- rubygems_version: 1.8.5
222
+ rubygems_version: 1.8.10
158
223
  signing_key:
159
224
  specification_version: 3
160
225
  summary: Simple API to run Model methods in the background