simple_worker 0.6.1 → 0.6.2

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/railtie.rb CHANGED
@@ -10,29 +10,36 @@ module SimpleWorker
10
10
  initializer "simple_worker.configure_rails_initialization" do |app|
11
11
  puts "Initializing SimpleWorker for Rails 3..."
12
12
  SimpleWorker.configure do |c2|
13
- models_path = File.join(Rails.root, 'app/models/*.rb')
14
- c2.models = Dir.glob(models_path)
15
- mailers_path = File.join(Rails.root, 'app/mailers/*.rb')
16
- c2.mailers =Dir.glob(mailers_path).collect { |m| {:filename=>m, :name => File.basename(m), :path_to_templates=>File.join(Rails.root, "app/views/#{File.basename(m, File.extname(m))}")} }
13
+ models_path = File.join(Rails.root, 'app/models/*.rb')
14
+ c2.models = Dir.glob(models_path)
15
+ mailers_path = File.join(Rails.root, 'app/mailers/*.rb')
16
+ c2.mailers =Dir.glob(mailers_path).collect { |m| {:filename=>m, :name => File.basename(m), :path_to_templates=>File.join(Rails.root, "app/views/#{File.basename(m, File.extname(m))}")} }
17
17
  c2.extra_requires += ['active_support/core_ext', 'active_record', 'action_mailer']
18
- c2.database = Rails.configuration.database_configuration[Rails.env]
19
- c2.gems = get_required_gems if Bundler
20
- puts "MODELS" + c2.models.inspect
21
- puts "MAILERS" + c2.mailers.inspect
22
- puts "DATABASE" + c2.database.inspect
23
- puts "GEMS" + c2.gems.inspect
18
+ c2.database = Rails.configuration.database_configuration[Rails.env]
19
+ c2.gems = get_required_gems if defined?(Bundler)
20
+ SimpleWorker.logger.debug "MODELS " + c2.models.inspect
21
+ SimpleWorker.logger.debug "MAILERS " + c2.mailers.inspect
22
+ SimpleWorker.logger.debug "DATABASE " + c2.database.inspect
23
+ SimpleWorker.logger.debug "GEMS " + c2.gems.inspect
24
24
  end
25
25
  end
26
26
 
27
27
  def get_required_gems
28
28
  gems_in_gemfile = Bundler.environment.dependencies.select { |d| d.groups.include?(:default) }
29
- gems =[]
29
+ gems =[]
30
+ specs = Bundler.load.specs
31
+ puts 'specs=' + specs.inspect
30
32
  gems_in_gemfile.each do |dep|
31
33
  next if dep.name=='rails' #monkey patch
32
34
  gem_info = {:name=>dep.name, :version=>dep.requirement}
33
35
  gem_info.merge!({:require=>dep.autorequire.join}) if dep.autorequire
34
- gem_info[:version] = Bundler.load.specs.find { |g| g.name==gem_info[:name] }.version.to_s
35
- gems << gem_info
36
+ spec = specs.find { |g| g.name==gem_info[:name] }
37
+ if spec
38
+ gem_info[:version] = spec.version.to_s
39
+ gems << gem_info
40
+ else
41
+ SimpleWorker.logger.warn "Could not find gem spec for #{gem_info[:name]}"
42
+ end
36
43
  end
37
44
  gems
38
45
  end
data/lib/simple_worker.rb CHANGED
@@ -1,5 +1,3 @@
1
- require 'appoxy_api'
2
- #require 'active_support/core_ext'
3
1
  require_relative 'simple_worker/service'
4
2
  require_relative 'simple_worker/base'
5
3
  require_relative 'simple_worker/config'
@@ -7,6 +5,9 @@ require_relative 'simple_worker/used_in_worker'
7
5
 
8
6
 
9
7
  module SimpleWorker
8
+ @@logger = Logger.new(STDOUT)
9
+ @@logger.level = Logger::INFO
10
+
10
11
 
11
12
  class << self
12
13
  attr_accessor :config,
@@ -20,7 +21,14 @@ module SimpleWorker
20
21
  def config
21
22
  @config ||= Config.new
22
23
  end
23
-
24
+
25
+ def logger
26
+ @@logger
27
+ end
28
+
29
+ def api_version
30
+ 3
31
+ end
24
32
  end
25
33
 
26
34
  end
@@ -0,0 +1,153 @@
1
+ module SimpleWorker
2
+ module Api
3
+
4
+ module Signatures
5
+
6
+
7
+ def self.generate_timestamp(gmtime)
8
+ return gmtime.strftime("%Y-%m-%dT%H:%M:%SZ")
9
+ end
10
+
11
+
12
+ def self.generate_signature(operation, timestamp, secret_key)
13
+ my_sha_hmac = Digest::HMAC.digest(operation + timestamp, secret_key, Digest::SHA1)
14
+ my_b64_hmac_digest = Base64.encode64(my_sha_hmac).strip
15
+ return my_b64_hmac_digest
16
+ end
17
+
18
+
19
+ def self.hash_to_s(hash)
20
+ str = ""
21
+ hash.sort.each { |a| str+= "#{a[0]}#{a[1]}" }
22
+ #removing all characters that could differ after parsing with rails
23
+ return str.delete "\"\/:{}[]\' T"
24
+ end
25
+ end
26
+
27
+ # Subclass must define:
28
+ # host: endpoint url for service
29
+ class Client
30
+
31
+ @@logger = Logger.new(STDOUT)
32
+ @@logger.level = Logger::INFO
33
+
34
+ def self.logger
35
+ @@logger
36
+ end
37
+
38
+ attr_accessor :host, :access_key, :secret_key, :version
39
+
40
+ def initialize(host, access_key, secret_key, options={})
41
+ @host = host
42
+ @access_key = access_key
43
+ @secret_key = secret_key
44
+ end
45
+
46
+ def process_ex(ex)
47
+ body = ex.http_body
48
+ puts 'EX BODY=' + body.to_s
49
+ decoded_ex = JSON.parse(ex.http_body)
50
+ exception = Exception.new(ex.message+":"+decoded_ex["msg"])
51
+ exception.set_backtrace(decoded_ex["backtrace"].split(",")) if decoded_ex["backtrace"]
52
+ raise exception
53
+ end
54
+
55
+ def get(method, params={}, options={})
56
+ begin
57
+ # ClientHelper.run_http(host, access_key, secret_key, :get, method, nil, params)
58
+ parse_response RestClient.get(append_params(url(method), add_params(method, params)), headers), options
59
+ rescue RestClient::BadRequest, RestClient::InternalServerError => ex
60
+ process_ex(ex)
61
+ end
62
+ end
63
+
64
+ def post_file(method, file, params={}, options={})
65
+ begin
66
+ parse_response RestClient.post(url(method), add_params(method, params).merge!({:file=>file}), :multipart => true), options
67
+ rescue RestClient::BadRequest, RestClient::InternalServerError => ex
68
+ process_ex(ex)
69
+ end
70
+ end
71
+
72
+ def post(method, params={}, options={})
73
+ begin
74
+ parse_response RestClient.post(url(method), add_params(method, params).to_json, headers), options
75
+ #ClientHelper.run_http(host, access_key, secret_key, :post, method, nil, params)
76
+ rescue RestClient::BadRequest, RestClient::InternalServerError => ex
77
+ process_ex(ex)
78
+ end
79
+ end
80
+
81
+
82
+ def put(method, body, options={})
83
+ begin
84
+ parse_response RestClient.put(url(method), add_params(method, body).to_json, headers), options
85
+ #ClientHelper.run_http(host, access_key, secret_key, :put, method, body, nil)
86
+ rescue RestClient::BadRequest, RestClient::InternalServerError => ex
87
+ process_ex(ex)
88
+ end
89
+ end
90
+
91
+ def delete(method, params={}, options={})
92
+ begin
93
+ parse_response RestClient.delete(append_params(url(method), add_params(method, params))), options
94
+ rescue RestClient::BadRequest, RestClient::InternalServerError => ex
95
+ process_ex(ex)
96
+ end
97
+ end
98
+
99
+ def url(command_path)
100
+ url = host + command_path
101
+ url
102
+ end
103
+
104
+ def add_params(command_path, hash)
105
+ v = version||"0.1"
106
+ ts = SimpleWorker::Api::Signatures.generate_timestamp(Time.now.gmtime)
107
+ # puts 'timestamp = ' + ts
108
+ sig = case v
109
+ when "0.2"
110
+ SimpleWorker::Api::Signatures.generate_signature(command_path + SimpleWorker::Api::Signatures.hash_to_s(hash), ts, secret_key)
111
+ when "0.1"
112
+ SimpleWorker::Api::Signatures.generate_signature(command_path, ts, secret_key)
113
+ end
114
+
115
+ extra_params = {'sigv'=>v, 'sig' => sig, 'timestamp' => ts, 'access_key' => access_key}
116
+ hash.merge!(extra_params)
117
+ end
118
+
119
+ def append_params(host, params)
120
+ host += "?"
121
+ i = 0
122
+ params.each_pair do |k, v|
123
+ host += "&" if i > 0
124
+ host += k + "=" + CGI.escape(v)
125
+ i +=1
126
+ end
127
+ return host
128
+ end
129
+
130
+ def headers
131
+ user_agent = "SimpleWorker Ruby Client"
132
+ headers = {'User-Agent' => user_agent}
133
+ end
134
+
135
+ def parse_response(response, options={})
136
+ # puts 'PARSE RESPONSE!'
137
+ unless options[:parse] == false
138
+ begin
139
+ return JSON.parse(response.to_s)
140
+ rescue => ex
141
+ puts 'response that caused error = ' + response.to_s
142
+ raise ex
143
+ end
144
+ else
145
+ response
146
+ end
147
+ end
148
+
149
+ end
150
+
151
+ end
152
+
153
+ end
@@ -1,152 +1,14 @@
1
1
  require 'base64'
2
2
  require 'logger'
3
- require 'appoxy_api'
4
3
  require 'zip'
5
4
  require 'rest_client'
6
5
  require 'json'
7
6
 
8
- module SimpleWorker
9
-
10
- @@logger = Logger.new(STDOUT)
11
- @@logger.level = Logger::INFO
12
-
13
- def self.logger
14
- @@logger
15
- end
16
-
17
- def self.api_version
18
- 3
19
- end
20
-
21
- module Api
22
-
23
- # Subclass must define:
24
- # host: endpoint url for service
25
- class Client
26
-
27
- @@logger = Logger.new(STDOUT)
28
- @@logger.level = Logger::INFO
29
-
30
- def self.logger
31
- @@logger
32
- end
33
-
34
- attr_accessor :host, :access_key, :secret_key, :version
35
-
36
- def initialize(host, access_key, secret_key, options={})
37
- @host = host
38
- @access_key = access_key
39
- @secret_key = secret_key
40
- end
41
-
42
- def process_ex(ex)
43
- body = ex.http_body
44
- puts 'EX BODY=' + body.to_s
45
- decoded_ex = JSON.parse(ex.http_body)
46
- exception = Exception.new(ex.message+":"+decoded_ex["msg"])
47
- exception.set_backtrace(decoded_ex["backtrace"].split(",")) if decoded_ex["backtrace"]
48
- raise exception
49
- end
50
-
51
- def get(method, params={}, options={})
52
- begin
53
- # ClientHelper.run_http(host, access_key, secret_key, :get, method, nil, params)
54
- parse_response RestClient.get(append_params(url(method), add_params(method, params)), headers), options
55
- rescue RestClient::BadRequest, RestClient::InternalServerError => ex
56
- process_ex(ex)
57
- end
58
- end
59
-
60
- def post_file(method, file, params={}, options={})
61
- begin
62
- parse_response RestClient.post(url(method), add_params(method, params).merge!({:file=>file}), :multipart => true), options
63
- rescue RestClient::BadRequest, RestClient::InternalServerError => ex
64
- process_ex(ex)
65
- end
66
- end
67
-
68
- def post(method, params={}, options={})
69
- begin
70
- parse_response RestClient.post(url(method), add_params(method, params).to_json, headers), options
71
- #ClientHelper.run_http(host, access_key, secret_key, :post, method, nil, params)
72
- rescue RestClient::BadRequest, RestClient::InternalServerError => ex
73
- process_ex(ex)
74
- end
75
- end
76
-
7
+ require_relative 'api'
77
8
 
78
- def put(method, body, options={})
79
- begin
80
- parse_response RestClient.put(url(method), add_params(method, body).to_json, headers), options
81
- #ClientHelper.run_http(host, access_key, secret_key, :put, method, body, nil)
82
- rescue RestClient::BadRequest, RestClient::InternalServerError => ex
83
- process_ex(ex)
84
- end
85
- end
86
-
87
- def delete(method, params={}, options={})
88
- begin
89
- parse_response RestClient.delete(append_params(url(method), add_params(method, params))), options
90
- rescue RestClient::BadRequest, RestClient::InternalServerError => ex
91
- process_ex(ex)
92
- end
93
- end
94
-
95
- def url(command_path)
96
- url = host + command_path
97
- url
98
- end
99
-
100
- def add_params(command_path, hash)
101
- v = version||"0.1"
102
- ts = Appoxy::Api::Signatures.generate_timestamp(Time.now.gmtime)
103
- # puts 'timestamp = ' + ts
104
- sig = case v
105
- when "0.2"
106
- Appoxy::Api::Signatures.generate_signature(command_path + Appoxy::Api::Signatures.hash_to_s(hash), ts, secret_key)
107
- when "0.1"
108
- Appoxy::Api::Signatures.generate_signature(command_path, ts, secret_key)
109
- end
110
-
111
- extra_params = {'sigv'=>v, 'sig' => sig, 'timestamp' => ts, 'access_key' => access_key}
112
- hash.merge!(extra_params)
113
- end
114
-
115
- def append_params(host, params)
116
- host += "?"
117
- i = 0
118
- params.each_pair do |k, v|
119
- host += "&" if i > 0
120
- host += k + "=" + CGI.escape(v)
121
- i +=1
122
- end
123
- return host
124
- end
125
-
126
- def headers
127
- user_agent = "Appoxy API Ruby Client"
128
- headers = {'User-Agent' => user_agent}
129
- end
130
-
131
- def parse_response(response, options={})
132
- puts 'PARSE RESPONSE!'
133
- unless options[:parse] == false
134
- begin
135
- return JSON.parse(response.to_s)
136
- rescue => ex
137
- puts 'response that caused error = ' + response.to_s
138
- raise ex
139
- end
140
- else
141
- response
142
- end
143
- end
144
-
145
- end
146
-
147
- end
9
+ module SimpleWorker
148
10
 
149
- class Service < Appoxy::Api::Client
11
+ class Service < SimpleWorker::Api::Client
150
12
 
151
13
  attr_accessor :config
152
14
 
@@ -223,7 +85,7 @@ module SimpleWorker
223
85
  gem_name =(gem_info[:require] || gem_info[:name].match(/^[a-zA-Z0-9\-_]+/)[0])
224
86
  puts "Searching for #{gem_name}..."
225
87
  searcher = Gem::GemPathSearcher.new
226
- gems = searcher.find_all(gem_name)
88
+ gems = searcher.find_all(gem_name)
227
89
  # gems = searcher.init_gemspecs.select { |gem| gem.name==gem_name }
228
90
  puts 'gems found=' + gems.inspect
229
91
  gems = gems.select { |g| g.version.version==gem_info[:version] } if gem_info[:version]
@@ -312,7 +174,7 @@ module SimpleWorker
312
174
  f.add(File.basename(m), m)
313
175
  end
314
176
  if merged_mailers && merged_mailers.size > 0
315
- # puts " MERGED MAILERS" + merged_mailers.inspect
177
+ # puts " MERGED MAILERS" + merged_mailers.inspect
316
178
  merged_mailers.each do |mailer|
317
179
  SimpleWorker.logger.debug "Collecting mailer #{mailer[:name]}"
318
180
  f.add(File.basename(mailer[:filename]), mailer[:filename])
@@ -435,4 +297,4 @@ module SimpleWorker
435
297
 
436
298
  end
437
299
 
438
- end
300
+ end
metadata CHANGED
@@ -1,8 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_worker
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.6.1
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 6
8
+ - 2
9
+ version: 0.6.2
6
10
  platform: ruby
7
11
  authors:
8
12
  - Travis Reeder
@@ -10,27 +14,32 @@ autorequire:
10
14
  bindir: bin
11
15
  cert_chain: []
12
16
 
13
- date: 2011-05-27 00:00:00 Z
17
+ date: 2011-05-29 00:00:00 -07:00
18
+ default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
- name: appoxy_api
21
+ name: zip
17
22
  prerelease: false
18
23
  requirement: &id001 !ruby/object:Gem::Requirement
19
24
  none: false
20
25
  requirements:
21
26
  - - ">="
22
27
  - !ruby/object:Gem::Version
23
- version: 0.0.11
28
+ segments:
29
+ - 0
30
+ version: "0"
24
31
  type: :runtime
25
32
  version_requirements: *id001
26
33
  - !ruby/object:Gem::Dependency
27
- name: zip
34
+ name: rest-client
28
35
  prerelease: false
29
36
  requirement: &id002 !ruby/object:Gem::Requirement
30
37
  none: false
31
38
  requirements:
32
39
  - - ">="
33
40
  - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
34
43
  version: "0"
35
44
  type: :runtime
36
45
  version_requirements: *id002
@@ -46,12 +55,14 @@ files:
46
55
  - lib/rails2_init.rb
47
56
  - lib/railtie.rb
48
57
  - lib/simple_worker.rb
58
+ - lib/simple_worker/api.rb
49
59
  - lib/simple_worker/base.rb
50
60
  - lib/simple_worker/config.rb
51
61
  - lib/simple_worker/service.rb
52
62
  - lib/simple_worker/used_in_worker.rb
53
63
  - rails/init.rb
54
64
  - README.markdown
65
+ has_rdoc: true
55
66
  homepage: http://github.com/appoxy/simple_worker
56
67
  licenses: []
57
68
 
@@ -65,17 +76,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
65
76
  requirements:
66
77
  - - ">="
67
78
  - !ruby/object:Gem::Version
79
+ segments:
80
+ - 0
68
81
  version: "0"
69
82
  required_rubygems_version: !ruby/object:Gem::Requirement
70
83
  none: false
71
84
  requirements:
72
85
  - - ">="
73
86
  - !ruby/object:Gem::Version
87
+ segments:
88
+ - 0
74
89
  version: "0"
75
90
  requirements: []
76
91
 
77
92
  rubyforge_project:
78
- rubygems_version: 1.7.2
93
+ rubygems_version: 1.3.7
79
94
  signing_key:
80
95
  specification_version: 3
81
96
  summary: The official SimpleWorker gem for http://www.simpleworker.com