simple_worker 2.0.2 → 2.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/lib/simple_worker/api.rb +8 -6
- data/lib/simple_worker/base.rb +2 -2
- data/lib/simple_worker/server/overrides.rb +6 -0
- data/lib/simple_worker/service.rb +13 -15
- data/lib/simple_worker/uber_client.rb +88 -0
- metadata +16 -15
data/lib/simple_worker/api.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'rest_client'
|
2
|
-
|
2
|
+
require_relative 'uber_client'
|
3
3
|
|
4
4
|
module SimpleWorker
|
5
5
|
|
@@ -56,6 +56,8 @@ module SimpleWorker
|
|
56
56
|
|
57
57
|
@base_url = "#{@scheme}://#{@host}:#{@port}/#{@version}"
|
58
58
|
|
59
|
+
@uber_client = Uber::Client.new
|
60
|
+
|
59
61
|
end
|
60
62
|
|
61
63
|
|
@@ -125,7 +127,7 @@ module SimpleWorker
|
|
125
127
|
logger.debug 'get url=' + full_url
|
126
128
|
req_hash = common_req_hash
|
127
129
|
req_hash[:params] = params
|
128
|
-
response =
|
130
|
+
response = @uber_client.get(full_url, req_hash) # could let typhoeus add params, using :params=>x
|
129
131
|
#response = @http_sess.request(:get, url_plus_params,
|
130
132
|
# {},
|
131
133
|
# {})
|
@@ -143,7 +145,7 @@ module SimpleWorker
|
|
143
145
|
logger.debug "data = " + data
|
144
146
|
logger.debug "params = " + params.inspect
|
145
147
|
logger.debug "options = " + options.inspect
|
146
|
-
# todo: replace with
|
148
|
+
# todo: replace with uber_client
|
147
149
|
parse_response(RestClient.post(append_params(url, add_params(method, params)), {:data => data, :file => file}, :content_type => 'application/json'), options)
|
148
150
|
rescue RestClient::Exception => ex
|
149
151
|
process_ex(ex)
|
@@ -162,7 +164,7 @@ module SimpleWorker
|
|
162
164
|
logger.debug 'body=' + json
|
163
165
|
req_hash = common_req_hash
|
164
166
|
req_hash[:body] = json
|
165
|
-
response =
|
167
|
+
response = @uber_client.post(url, req_hash)
|
166
168
|
#response = @http_sess.post(url, json, {"Content-Type" => 'application/json'})
|
167
169
|
check_response(response)
|
168
170
|
logger.debug 'response: ' + response.inspect
|
@@ -181,7 +183,7 @@ module SimpleWorker
|
|
181
183
|
|
182
184
|
def put(method, body, options={})
|
183
185
|
begin
|
184
|
-
# todo: replace with
|
186
|
+
# todo: replace with uber_client
|
185
187
|
parse_response RestClient.put(url_full(method), add_params(method, body).to_json, headers), options
|
186
188
|
rescue RestClient::Exception => ex
|
187
189
|
process_ex(ex)
|
@@ -190,7 +192,7 @@ module SimpleWorker
|
|
190
192
|
|
191
193
|
def delete(method, params={}, options={})
|
192
194
|
begin
|
193
|
-
# todo: replace with
|
195
|
+
# todo: replace with uber_client
|
194
196
|
parse_response RestClient.delete(append_params(url_full(method), add_params(method, params))), options
|
195
197
|
rescue RestClient::Exception => ex
|
196
198
|
process_ex(ex)
|
data/lib/simple_worker/base.rb
CHANGED
@@ -46,7 +46,7 @@ module SimpleWorker
|
|
46
46
|
reqs.each do |r|
|
47
47
|
r2 = "#{gem_info[:path]}/lib/#{r}"
|
48
48
|
begin
|
49
|
-
|
49
|
+
SimpleWorker.logger.debug 'requiring ' + r2
|
50
50
|
require r2
|
51
51
|
rescue LoadError=>ex
|
52
52
|
SimpleWorker.logger.error "Error requiring gem #{r}: #{ex.message}"
|
@@ -70,7 +70,7 @@ module SimpleWorker
|
|
70
70
|
f2 = SimpleWorker::MergeHelper.check_for_file(mailer, @caller_file)
|
71
71
|
basename = File.basename(mailer, f2[:extname])
|
72
72
|
path_to_templates = params[:path_to_templates] || File.join(Rails.root, "app/views/#{basename}")
|
73
|
-
@merged_mailers[basename] = {:name=>basename, :path_to_templates=>path_to_templates, :filename =>
|
73
|
+
@merged_mailers[basename] = {:name=>basename, :path_to_templates=>path_to_templates, :filename => f2[:path]}.merge!(params)
|
74
74
|
end
|
75
75
|
|
76
76
|
def merge_folder(path)
|
@@ -194,21 +194,19 @@ Dir.chdir(dirname)
|
|
194
194
|
job_data = JSON.load(File.open(task_data_file))
|
195
195
|
puts 'job_data=' + job_data.inspect
|
196
196
|
sw_config = job_data['sw_config']
|
197
|
-
|
198
|
-
|
197
|
+
SimpleWorker.task_data = job_data
|
199
198
|
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
199
|
+
if SimpleWorker.task_data['rails']
|
200
|
+
module ::Rails
|
201
|
+
def self.version
|
202
|
+
SimpleWorker.task_data['rails']['version']
|
203
|
+
end
|
204
|
+
def self.env
|
205
|
+
SimpleWorker.task_data['rails']['env']
|
206
|
+
end
|
208
207
|
end
|
209
208
|
end
|
210
|
-
"
|
211
|
-
end
|
209
|
+
")
|
212
210
|
|
213
211
|
if SimpleWorker.config.extra_requires
|
214
212
|
SimpleWorker.config.extra_requires.each do |r|
|
@@ -469,12 +467,12 @@ end
|
|
469
467
|
ret
|
470
468
|
end
|
471
469
|
|
472
|
-
def cancel_schedule(scheduled_task_id)
|
470
|
+
def cancel_schedule(scheduled_task_id, options={})
|
473
471
|
raise "Must include a schedule id." if scheduled_task_id.blank?
|
474
472
|
hash_to_send = {}
|
475
473
|
hash_to_send["schedule_id"] = scheduled_task_id
|
476
|
-
|
477
|
-
|
474
|
+
uri = "#{project_url_prefix(get_project_id(options))}schedules/#{scheduled_task_id}"
|
475
|
+
delete(uri, hash_to_send)
|
478
476
|
end
|
479
477
|
|
480
478
|
def get_projects()
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# This is a simple wrapper that can use different http clients depending on what's installed.
|
2
|
+
# The purpose of this is so that users who can't install binaries easily (like windoze users) can have fallbacks that work.
|
3
|
+
|
4
|
+
|
5
|
+
module Uber
|
6
|
+
def self.gem=(g)
|
7
|
+
@gem = g
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.gem
|
11
|
+
@gem
|
12
|
+
end
|
13
|
+
|
14
|
+
begin
|
15
|
+
require 'typhoeus'
|
16
|
+
Uber.gem = :typhoeus
|
17
|
+
rescue LoadError => ex
|
18
|
+
puts "Could not load typhoeus. #{ex.class.name}: #{ex.message}. Falling back to rest-client. Please install 'typhoeus' gem for best performance."
|
19
|
+
require 'rest_client'
|
20
|
+
Uber.gem = :rest_client
|
21
|
+
end
|
22
|
+
|
23
|
+
class RestClientResponseWrapper
|
24
|
+
def initialize(response)
|
25
|
+
@response = response
|
26
|
+
end
|
27
|
+
|
28
|
+
def code
|
29
|
+
@response.code
|
30
|
+
end
|
31
|
+
|
32
|
+
def body
|
33
|
+
@response.body
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
class ClientError < StandardError
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
class RestClientExceptionWrapper < ClientError
|
43
|
+
def initialize(ex)
|
44
|
+
super(ex.message)
|
45
|
+
@ex = ex
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class Client
|
50
|
+
|
51
|
+
def initialize
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
def get(url, req_hash={})
|
56
|
+
if Uber.gem == :typhoeus
|
57
|
+
response = Typhoeus::Request.get(url, req_hash)
|
58
|
+
else
|
59
|
+
begin
|
60
|
+
headers = req_hash[:headers] || {}
|
61
|
+
r2 = RestClient.get(url, req_hash.merge(headers))
|
62
|
+
response = RestClientResponseWrapper.new(r2)
|
63
|
+
# todo: make generic exception
|
64
|
+
rescue RestClient::Exception => ex
|
65
|
+
raise RestClientExceptionWrapper.new(ex)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
response
|
69
|
+
end
|
70
|
+
|
71
|
+
def post(url, req_hash={})
|
72
|
+
if Uber.gem == :typhoeus
|
73
|
+
response = Typhoeus::Request.post(url, req_hash)
|
74
|
+
else
|
75
|
+
begin
|
76
|
+
headers = req_hash[:headers] || {}
|
77
|
+
r2 = RestClient.post(url, req_hash[:body], headers)
|
78
|
+
response = RestClientResponseWrapper.new(r2)
|
79
|
+
# todo: make generic exception
|
80
|
+
rescue RestClient::Exception => ex
|
81
|
+
raise RestClientExceptionWrapper(ex)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
response
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_worker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-11-
|
12
|
+
date: 2011-11-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: zip
|
16
|
-
requirement: &
|
16
|
+
requirement: &14034160 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *14034160
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rest-client
|
27
|
-
requirement: &
|
27
|
+
requirement: &14033500 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *14033500
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: typhoeus
|
38
|
-
requirement: &
|
38
|
+
requirement: &14103600 !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: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *14103600
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: zip
|
49
|
-
requirement: &
|
49
|
+
requirement: &14103060 !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: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *14103060
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rest-client
|
60
|
-
requirement: &
|
60
|
+
requirement: &14102560 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *14102560
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: typhoeus
|
71
|
-
requirement: &
|
71
|
+
requirement: &14102080 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *14102080
|
80
80
|
description: The official SimpleWorker gem for http://www.simpleworker.com
|
81
81
|
email: travis@appoxy.com
|
82
82
|
executables: []
|
@@ -94,6 +94,7 @@ files:
|
|
94
94
|
- lib/simple_worker/server/overrides.rb
|
95
95
|
- lib/simple_worker/server/runner.rb
|
96
96
|
- lib/simple_worker/service.rb
|
97
|
+
- lib/simple_worker/uber_client.rb
|
97
98
|
- lib/simple_worker/used_in_worker.rb
|
98
99
|
- lib/simple_worker/utils.rb
|
99
100
|
- rails/init.rb
|
@@ -118,7 +119,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
118
119
|
version: '0'
|
119
120
|
requirements: []
|
120
121
|
rubyforge_project:
|
121
|
-
rubygems_version: 1.8.
|
122
|
+
rubygems_version: 1.8.11
|
122
123
|
signing_key:
|
123
124
|
specification_version: 3
|
124
125
|
summary: The official SimpleWorker gem for http://www.simpleworker.com
|