backgrounded 0.7.3 → 0.7.4

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/.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