iron_worker 2.2.0 → 2.3.0

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/VERSION.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :major: 2
3
- :minor: 2
3
+ :minor: 3
4
4
  :patch: 0
5
5
  :build:
@@ -214,9 +214,10 @@ module IronWorker
214
214
  # running worker, it will be rejected unless you set this explicitly so we know you meant to do it.
215
215
  def queue(options={})
216
216
  # puts 'in queue'
217
+
217
218
  set_auto_attributes
218
219
  upload_if_needed(options)
219
-
220
+ IronWorker.service.config.force_upload = IronWorker.service.config.force_upload && is_local?
220
221
  response = IronWorker.service.queue(self.class.name, sw_get_data, options)
221
222
  IronWorker.service.logger.debug 'queue response=' + response.inspect
222
223
  @response = response
@@ -287,7 +288,7 @@ module IronWorker
287
288
 
288
289
  # Retrieves the log for this worker from the IronWorker service.
289
290
  def get_log(options={})
290
- IronWorker.service.get_log(task_id, options)
291
+ IronWorker.service.log(task_id, options)
291
292
  end
292
293
 
293
294
  # Callbacks for developer
@@ -28,7 +28,8 @@ module IronWorker
28
28
  :unmerged,
29
29
  :merged_gems,
30
30
  :unmerged_gems,
31
- :force_upload
31
+ :force_upload,
32
+ :beta
32
33
 
33
34
 
34
35
  def initialize
@@ -249,14 +250,15 @@ module IronWorker
249
250
  else
250
251
  gem_info[:version] = options
251
252
  end
252
- gem_info[:require] ||= gem_name
253
253
 
254
- path = IronWorker::Service.get_gem_path(gem_info)
254
+ gemspec, path = IronWorker::Service.get_gem_path(gem_info)
255
255
  IronWorker.logger.debug "Gem path=#{path}"
256
256
  if !path
257
257
  raise "Gem '#{gem_name}' not found."
258
258
  end
259
+ gem_info[:gemspec] = gemspec
259
260
  gem_info[:path] = path
261
+ gem_info[:require] ||= gem_name
260
262
  gem_info
261
263
  end
262
264
  end
@@ -1,6 +1,7 @@
1
1
  require 'base64'
2
2
  require 'logger'
3
3
  require 'zip'
4
+ require 'bundler'
4
5
  require 'rest_client'
5
6
  require 'json'
6
7
 
@@ -47,23 +48,25 @@ module IronWorker
47
48
  existing_md5 = IO.read(md5_f)
48
49
  end
49
50
 
50
- # Check for code changes.
51
- md5 = Digest::MD5.hexdigest(File.read(filename))
52
- new_code = false
53
- if self.config.force_upload || md5 != existing_md5
54
- IronWorker.logger.info "Uploading #{class_name}, code modified."
55
- File.open(md5_f, 'w') { |f| f.write(md5) }
56
- new_code = true
57
- # todo: delete md5 file if error occurs during upload process
58
- else
59
- # puts "#{class_name}: same code, not uploading"
60
- return
61
- end
62
51
 
63
52
  begin
64
53
 
65
54
  zip_filename = build_merged_file(filename, options[:merge], options[:unmerge], options[:merged_gems], options[:merged_mailers], options[:merged_folders])
66
55
 
56
+ # Check for code changes.
57
+ zipfile = Zip::ZipFile.open(zip_filename, Zip::ZipFile::CREATE)
58
+ crc = zipfile.entries.collect{|x|x.crc}.inject(:+)
59
+ new_code = false
60
+ if self.config.force_upload || crc.to_s != existing_md5
61
+ IronWorker.logger.info "Uploading #{class_name}, code modified."
62
+ File.open(md5_f, 'w') { |f| f.write(crc) }
63
+ new_code = true
64
+ # todo: delete md5 file if error occurs during upload process
65
+ else
66
+ # puts "#{class_name}: same code, not uploading"
67
+ return
68
+ end
69
+
67
70
  if new_code
68
71
  upload_code(name, zip_filename, 'runner.rb', :runtime=>'ruby')
69
72
  end
@@ -96,10 +99,31 @@ module IronWorker
96
99
  gems = gems.select { |g| g.version.version==gem_info[:version] } if gem_info[:version]
97
100
  if !gems.empty?
98
101
  gem = gems.last
99
- gem.full_gem_path
102
+ return gem,gem.full_gem_path
100
103
  else
101
- return nil
104
+ return nil,nil
105
+ end
106
+ end
107
+
108
+
109
+ def gem_dependencies(list_of_gems)
110
+ deps = []
111
+ dependendent_gems ={}
112
+ list_of_gems.each_value do |v|
113
+ @deps = v[:gemspec].dependencies
114
+ @deps.each do |d|
115
+ deps << Bundler::DepProxy.new(d, 'ruby')
116
+ end
102
117
  end
118
+ filtered_deps = deps.select { |d| d.type != :development }
119
+ index = Bundler::Index.new
120
+ Gem::Specification.all.collect { |s| index<<s }
121
+ list = Bundler::Resolver.resolve(filtered_deps, index)
122
+ list.each do |gemspec|
123
+ next if list_of_gems.keys.include?(gemspec.name)
124
+ dependendent_gems[gemspec.name] = IronWorker::MergeHelper.create_gem_info(gemspec.name, gemspec.version.version)
125
+ end
126
+ dependendent_gems
103
127
  end
104
128
 
105
129
  def build_merged_file(filename, merged, unmerge, merged_gems, merged_mailers, merged_folders)
@@ -122,7 +146,8 @@ module IronWorker
122
146
  merged_gems.delete(k)
123
147
  end
124
148
  IronWorker.logger.debug 'merged_gems_after=' + merged_gems.inspect
125
-
149
+ gems_dependencies = IronWorker.config.beta ? gem_dependencies(merged_gems) : {}
150
+ IronWorker.logger.debug 'gem_dependencies=' + gems_dependencies.inspect
126
151
  merged_mailers ||= {}
127
152
  merged_mailers = merged_mailers.merge(IronWorker.config.mailers) if IronWorker.config.mailers
128
153
 
@@ -154,6 +179,11 @@ ARGV.each do |arg|
154
179
  end
155
180
  require 'json'
156
181
  ")
182
+ #require gems dependencies
183
+ gems_dependencies.each_pair do |k, gem|
184
+ IronWorker.logger.debug "Bundling gem #{gem[:name]}..."
185
+ f.write "$LOAD_PATH << File.join(File.dirname(__FILE__), '/gems/#{gem[:name]}/lib')\n"
186
+ end
157
187
  # require merged gems
158
188
  merged_gems.each_pair do |k, gem|
159
189
  IronWorker.logger.debug "Bundling gem #{gem[:name]}..."
@@ -263,6 +293,8 @@ end
263
293
  # puts 'merged_file_array=' + merge.inspect
264
294
  #File.open(fname2, "w") do |f|
265
295
  File.delete(fname2) if File.exist?(fname2)
296
+ #merging all gems and deps
297
+ merged_gems.merge!(gems_dependencies)
266
298
  Zip::ZipFile.open(fname2, 'w') do |f|
267
299
  if merged_gems && merged_gems.size > 0
268
300
  merged_gems.each_pair do |k, gem|
@@ -479,41 +511,30 @@ end
479
511
  delete(uri, hash_to_send)
480
512
  end
481
513
 
482
- def get_projects()
483
- hash_to_send = {}
484
- ret = get("projects", hash_to_send)
485
- ret
486
- end
487
-
488
514
  def get_project_id(options={})
489
515
  options[:project_id] || config.project_id
490
516
  end
491
517
 
492
- def get_project(options={})
493
- hash_to_send = {}
494
-
495
- ret = get("projects/"+ get_project_id(options) +"/", hash_to_send)
496
- #uri = project_url_prefix(id)
497
- #puts "get_project, uri = " + uri
498
- #ret = get(uri, hash_to_send)
499
- ret
500
- end
501
-
502
- def get_codes(options={})
518
+ def codes(options={})
503
519
  hash_to_send = {}
504
520
  uri = "projects/" + get_project_id(options) + "/codes"
505
521
  ret = get(uri, hash_to_send)
506
522
  ret
507
523
  end
508
524
 
509
- def get_schedules(options={})
525
+ def schedules(options={})
510
526
  hash_to_send = {}
511
527
  uri = "projects/" + get_project_id(options) + "/schedules"
512
528
  ret = get(uri, hash_to_send)
513
529
  ret
514
530
  end
515
531
 
516
- def get_jobs(options={})
532
+ def jobs(options={})
533
+ puts 'Service.jobs is deprecated, use Service.tasks instead'
534
+ tasks(options)
535
+ end
536
+
537
+ def tasks(options={})
517
538
  hash_to_send = {}
518
539
  uri = "projects/" + get_project_id(options) + "/tasks"
519
540
  ret = get(uri, hash_to_send)
@@ -521,6 +542,7 @@ end
521
542
  end
522
543
 
523
544
  def get_log(job_id, options={})
545
+ puts 'Service.get_log is deprecated, use Service.log instead'
524
546
  log(job_id, options)
525
547
  end
526
548
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iron_worker
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.3.0
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-12-18 00:00:00.000000000 Z
12
+ date: 2012-01-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: zip
16
- requirement: &9516660 !ruby/object:Gem::Requirement
16
+ requirement: &24684180 !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: *9516660
24
+ version_requirements: *24684180
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rest-client
27
- requirement: &9548900 !ruby/object:Gem::Requirement
27
+ requirement: &24682880 !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: *9548900
35
+ version_requirements: *24682880
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rest
38
- requirement: &9545520 !ruby/object:Gem::Requirement
38
+ requirement: &24681840 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,21 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *9545520
46
+ version_requirements: *24681840
47
+ - !ruby/object:Gem::Dependency
48
+ name: bundler
49
+ requirement: &24681260 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *24681260
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: zip
49
- requirement: &9544720 !ruby/object:Gem::Requirement
60
+ requirement: &24680760 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ! '>='
@@ -54,10 +65,10 @@ dependencies:
54
65
  version: '0'
55
66
  type: :runtime
56
67
  prerelease: false
57
- version_requirements: *9544720
68
+ version_requirements: *24680760
58
69
  - !ruby/object:Gem::Dependency
59
70
  name: rest-client
60
- requirement: &9567580 !ruby/object:Gem::Requirement
71
+ requirement: &24680260 !ruby/object:Gem::Requirement
61
72
  none: false
62
73
  requirements:
63
74
  - - ! '>='
@@ -65,10 +76,21 @@ dependencies:
65
76
  version: '0'
66
77
  type: :runtime
67
78
  prerelease: false
68
- version_requirements: *9567580
79
+ version_requirements: *24680260
69
80
  - !ruby/object:Gem::Dependency
70
81
  name: rest
71
- requirement: &9564080 !ruby/object:Gem::Requirement
82
+ requirement: &24679760 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: *24679760
91
+ - !ruby/object:Gem::Dependency
92
+ name: bundler
93
+ requirement: &24762060 !ruby/object:Gem::Requirement
72
94
  none: false
73
95
  requirements:
74
96
  - - ! '>='
@@ -76,7 +98,7 @@ dependencies:
76
98
  version: '0'
77
99
  type: :runtime
78
100
  prerelease: false
79
- version_requirements: *9564080
101
+ version_requirements: *24762060
80
102
  description: The official IronWorker gem for IronWorker by Iron.io. http://www.iron.io
81
103
  email: travis@iron.io
82
104
  executables: []