simple_worker 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/lib/railtie.rb CHANGED
@@ -6,95 +6,11 @@ require 'rails'
6
6
  module SimpleWorker
7
7
  class Railtie < Rails::Railtie
8
8
 
9
- @gems_to_skip = ['actionmailer', 'actionpack', 'activemodel', 'activeresource', 'activesupport',
10
- 'bundler',
11
- 'mail',
12
- 'mysql2',
13
- 'rails',
14
- 'tzinfo' # HUGE!
15
- ]
16
-
17
- def self.gems_to_skip
18
- @gems_to_skip
19
- end
20
9
 
21
10
  initializer "simple_worker.configure_rails_initialization" do |app|
22
- SimpleWorker.logger.info "Initializing SimpleWorker for Rails 3..."
23
- start_time = Time.now
24
- SimpleWorker.configure do |c2|
25
- models_path = File.join(Rails.root, 'app/models/*.rb')
26
- c2.models = Dir.glob(models_path)
27
- mailers_path = File.join(Rails.root, 'app/mailers/*.rb')
28
- 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))}")} }
29
- c2.extra_requires += ['active_support/core_ext', 'action_mailer']
30
- #puts 'DB FILE=' + File.join(Rails.root, 'config', 'database.yml').to_s
31
- if defined?(ActiveRecord) && File.exist?(File.join(Rails.root, 'config', 'database.yml'))
32
- c2.extra_requires += ['active_record']
33
- c2.database = Rails.configuration.database_configuration[Rails.env]
34
- else
35
- #puts 'NOT DOING ACTIVERECORD'
36
- end
37
- c2.gems = get_required_gems if defined?(Bundler)
38
- SimpleWorker.logger.debug "MODELS " + c2.models.inspect
39
- SimpleWorker.logger.debug "MAILERS " + c2.mailers.inspect
40
- SimpleWorker.logger.debug "DATABASE " + c2.database.inspect
41
- SimpleWorker.logger.debug "GEMS " + c2.gems.inspect
42
- end
43
- end_time = Time.now
44
- SimpleWorker.logger.info "SimpleWorker initialized. Duration: #{((end_time.to_f-start_time.to_f) * 1000.0).to_i} ms"
45
11
 
46
12
  end
47
13
 
48
- def get_required_gems
49
- gems_in_gemfile = Bundler.environment.dependencies.select { |d| d.groups.include?(:default) }
50
- SimpleWorker.logger.debug 'gems in gemfile=' + gems_in_gemfile.inspect
51
- gems =[]
52
- specs = Bundler.load.specs
53
- SimpleWorker.logger.debug 'Bundler specs=' + specs.inspect
54
- SimpleWorker.logger.debug "gems_to_skip=" + self.class.gems_to_skip.inspect
55
- specs.each do |spec|
56
- SimpleWorker.logger.debug 'spec.name=' + spec.name.inspect
57
- SimpleWorker.logger.debug 'spec=' + spec.inspect
58
- if self.class.gems_to_skip.include?(spec.name)
59
- SimpleWorker.logger.debug "Skipping #{spec.name}"
60
- next
61
- end
62
- # next if dep.name=='rails' #monkey patch
63
- gem_info = {:name=>spec.name, :version=>spec.version}
64
- gem_info[:auto_merged] = true
65
- # Now find dependency in gemfile in case user set the require
66
- dep = gems_in_gemfile.find { |g| g.name == gem_info[:name] }
67
- if dep
68
- SimpleWorker.logger.debug 'dep found in gemfile: ' + dep.inspect
69
- SimpleWorker.logger.debug 'autorequire=' + dep.autorequire.inspect
70
- gem_info[:require] = dep.autorequire if dep.autorequire
71
- # spec = specs.find { |g| g.name==gem_info[:name] }
72
- end
73
- gem_info[:version] = spec.version.to_s
74
- gems << gem_info
75
- path = SimpleWorker::Service.get_gem_path(gem_info)
76
- if path
77
- gem_info[:path] = path
78
- if gem_info[:require].nil? && dep
79
- # see if we should try to require this in our worker
80
- require_path = gem_info[:path] + "/lib/#{gem_info[:name]}.rb"
81
- SimpleWorker.logger.debug "require_path=" + require_path
82
- if File.exists?(require_path)
83
- SimpleWorker.logger.debug "File exists for require"
84
- gem_info[:require] = gem_info[:name]
85
- else
86
- SimpleWorker.logger.debug "no require"
87
- # gem_info[:no_require] = true
88
- end
89
- end
90
- end
91
- # else
92
- # SimpleWorker.logger.warn "Could not find gem spec for #{gem_info[:name]}"
93
- # raise "Could not find gem spec for #{gem_info[:name]}"
94
- # end
95
- end
96
- gems
97
- end
98
14
 
99
15
  end
100
16
  end
@@ -11,20 +11,20 @@ module SimpleWorker
11
11
  attr_accessor :subclass, :caller_file
12
12
  @merged = {}
13
13
  @merged_workers = {}
14
- @merged_gems = []
14
+ @merged_gems = {}
15
15
  @merged_mailers = []
16
16
  @merged_folders = {}
17
17
  @unmerged = {}
18
- @unmerged_gems = []
18
+ @unmerged_gems = {}
19
19
 
20
20
  def reset!
21
21
  @merged = {}
22
22
  @merged_workers = {}
23
- @merged_gems = []
23
+ @merged_gems = {}
24
24
  @merged_mailers = []
25
25
  @merged_folders = {}
26
26
  @unmerged = {}
27
- @unmerged_gems = []
27
+ @unmerged_gems = {}
28
28
  end
29
29
 
30
30
  def inherited(subclass)
@@ -44,48 +44,10 @@ module SimpleWorker
44
44
  super
45
45
  end
46
46
 
47
- def check_for_file(f)
48
- SimpleWorker.logger.debug 'Checking for ' + f.to_s
49
- f = f.to_str
50
- unless ends_with?(f, ".rb")
51
- f << ".rb"
52
- end
53
- exists = false
54
- if File.exist? f
55
- exists = true
56
- else
57
- # try relative
58
- # p caller
59
- f2 = File.join(File.dirname(caller[3]), f)
60
- puts 'f2=' + f2
61
- if File.exist? f2
62
- exists = true
63
- f = f2
64
- end
65
- end
66
- unless exists
67
- raise "File not found: " + f
68
- end
69
- f = File.expand_path(f)
70
- require f
71
- f
72
- end
73
-
74
47
  # merges the specified gem.
75
48
  def merge_gem(gem_name, options={})
76
- gem_info = {:name=>gem_name, :merge=>true}
77
- if options.is_a?(Hash)
78
- gem_info.merge!(options)
79
- else
80
- gem_info[:version] = options
81
- end
82
- path = SimpleWorker::Service.get_gem_path(gem_info)
83
- SimpleWorker.logger.debug "Gem path=#{path}"
84
- if !path
85
- raise "Gem path not found for #{gem_name}"
86
- end
87
- gem_info[:path] = path
88
- @merged_gems << gem_info
49
+ gem_info = SimpleWorker::MergeHelper.create_gem_info(gem_name, options)
50
+ @merged_gems[gem_name.to_s] = gem_info
89
51
  #puts 'before require ' + (options[:require] || gem_name)
90
52
  begin
91
53
  require options[:require] || gem_name
@@ -96,13 +58,17 @@ module SimpleWorker
96
58
 
97
59
 
98
60
  def unmerge_gem(gem_name)
99
- gem_info = {:name=>gem_name}
100
- @unmerged_gems << gem_info
61
+ #gem_info = {:name=>gem_name}
62
+ #@unmerged_gems[gem_name.to_s] = gem_info
63
+ gs = gem_name.to_s
64
+ gem_info = {:name=>gs}
65
+ @unmerged_gems[gs] = gem_info
66
+ @merged_gems.delete(gs)
101
67
  end
102
68
 
103
69
  #merge action_mailer mailers
104
70
  def merge_mailer(mailer, params={})
105
- check_for_file mailer
71
+ f2 = SimpleWorker::MergeHelper.check_for_file mailer, caller[2]
106
72
  basename = File.basename(mailer, File.extname(mailer))
107
73
  path_to_templates = params[:path_to_templates] || File.join(Rails.root, "app/views/#{basename}")
108
74
  @merged_mailers << {:name=>basename, :path_to_templates=>path_to_templates, :filename => mailer}.merge!(params)
@@ -136,8 +102,8 @@ module SimpleWorker
136
102
  def merge(*files)
137
103
  ret = nil
138
104
  files.each do |f|
139
- f2 = check_for_file(f)
140
- ret = {:name=>f, :path=>f2}
105
+ f2 = SimpleWorker::MergeHelper.check_for_file(f, caller[2])
106
+ ret = {:name=>f, :path=>f2}
141
107
  @merged[File.basename(f2)] = ret
142
108
  end
143
109
  ret
@@ -147,15 +113,11 @@ module SimpleWorker
147
113
  # where a lot of things are auto-merged by default like your models.
148
114
  def unmerge(*files)
149
115
  files.each do |f|
150
- f2 = check_for_file(f)
116
+ f2 = SimpleWorker::MergeHelper.check_for_file(f, caller[2])
151
117
  @unmerged[File.basename(f2)] = {:name=>f, :path=>f2}
152
118
  end
153
119
  end
154
120
 
155
- def ends_with?(s, suffix)
156
- suffix = suffix.to_s
157
- s[-suffix.length, suffix.length] == suffix
158
- end
159
121
 
160
122
  # Use this to merge in other workers. These are treated differently the normal merged files because
161
123
  # they will be uploaded separately and treated as distinctly separate workers.
@@ -354,12 +316,12 @@ module SimpleWorker
354
316
  private
355
317
 
356
318
  def gems_to_merge(merged_gems)
357
- list_of_gems =[]
319
+ list_of_gems = {}
358
320
  if merged_gems && merged_gems.size > 0
359
321
  installed_gems = SimpleWorker.config.get_server_gems
360
- merged_gems.each do |gem|
322
+ merged_gems.each_pair do |k, gem|
361
323
  gem.merge!({:merge=>(!installed_gems.find { |g| g["name"]==gem[:name] && g["version"]==gem[:version] })})
362
- list_of_gems<< gem if (list_of_gems.select { |g| g[:name]==gem[:name] }).empty?
324
+ list_of_gems[gem[:name]] = gem # don't' need this if (list_of_gems.select { |k,g| g[:name]==gem[:name] }).empty?
363
325
  end
364
326
  SimpleWorker.logger.debug "#{list_of_gems.inspect}"
365
327
  end
@@ -382,8 +344,11 @@ module SimpleWorker
382
344
  break if superclass.name == SimpleWorker::Base.name
383
345
  super_merged = superclass.instance_variable_get(:@merged)
384
346
  #puts 'merging caller file: ' + superclass.instance_variable_get(:@caller_file).inspect
385
- super_merged << superclass.instance_variable_get(:@caller_file)
386
- merged = super_merged + merged
347
+ caller_to_add = superclass.instance_variable_get(:@caller_file)
348
+ fb = File.basename(caller_to_add)
349
+ r = {:name=>fb, :path=>f2}
350
+ super_merged[fb] = r
351
+ merged.merge!(super_merged)
387
352
  #puts 'merged with superclass=' + merged.inspect
388
353
  end
389
354
  return merged, rfile, subclass
@@ -435,19 +400,23 @@ module SimpleWorker
435
400
  # puts 'merged1=' + merged.inspect
436
401
 
437
402
  merged, rfile, subclass = SimpleWorker::Base.extract_superclasses_merges(self, merged)
438
- if SimpleWorker.config.auto_merge
403
+ #if SimpleWorker.config.auto_merge
439
404
  puts "Auto merge Enabled"
440
- merged += SimpleWorker.config.models if SimpleWorker.config.models
405
+ #if SimpleWorker.config.models
406
+ # SimpleWorker.config.models.each do |m|
407
+ # merged[m] = m
408
+ # end
409
+ #end
441
410
  merged_mailers += SimpleWorker.config.mailers if SimpleWorker.config.mailers
442
- SimpleWorker.config.gems.each do |gem|
443
- merged_gems<<gem
444
- end
445
- end
446
- unless merged_gems.empty?
411
+ #SimpleWorker.config.gems.each do |gem|
412
+ # merged_gems[gem[:name]] = gem
413
+ #end
414
+ #end
415
+ unless merged_gems.size == 0
447
416
  merged_gems = gems_to_merge(merged_gems)
448
- merged_gems.uniq!
417
+ #merged_gems.uniq!
449
418
  end
450
- #merged.uniq!
419
+ #merged.uniq!
451
420
  merged_mailers.uniq!
452
421
  options_for_upload = {:merge=>merged, :unmerge=>unmerged, :merged_gems=>merged_gems, :merged_mailers=>merged_mailers, :merged_folders=>merged_folders}
453
422
  options_for_upload[:name] = options[:name] if options[:name]
@@ -16,16 +16,121 @@ module SimpleWorker
16
16
  :global_attributes,
17
17
  :models,
18
18
  :mailers,
19
- :gems,
19
+ #:gems, # todo: move anything that uses this to merged_gems
20
20
  :database,
21
21
  :extra_requires,
22
- :auto_merge,
23
- :server_gems
22
+ #:auto_merge,
23
+ :server_gems,
24
+ :merged,
25
+ :unmerged,
26
+ :merged_gems,
27
+ :unmerged_gems
24
28
 
25
29
 
26
30
  def initialize
27
31
  @global_attributes = {}
28
- @extra_requires = []
32
+ @extra_requires = []
33
+ @merged = {}
34
+ @unmerged = {}
35
+ @merged_gems = {}
36
+ @unmerged_gems = {}
37
+
38
+ end
39
+
40
+
41
+ @gems_to_skip = ['actionmailer', 'actionpack', 'activemodel', 'activeresource', 'activesupport',
42
+ 'bundler',
43
+ 'mail',
44
+ 'mysql2',
45
+ 'rails',
46
+ 'tzinfo' # HUGE!
47
+ ]
48
+
49
+ def self.gems_to_skip
50
+ @gems_to_skip
51
+ end
52
+
53
+ def auto_merge=(b)
54
+ if b
55
+ SimpleWorker.logger.info "Initializing SimpleWorker for Rails 3..."
56
+ start_time = Time.now
57
+ SimpleWorker.configure do |c2|
58
+ models_path = File.join(Rails.root, 'app/models/*.rb')
59
+ models = Dir.glob(models_path)
60
+ c2.models = models
61
+ models.each { |model| c2.merge(model) }
62
+ mailers_path = File.join(Rails.root, 'app/mailers/*.rb')
63
+ 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))}")} }
64
+ c2.extra_requires += ['active_support/core_ext', 'action_mailer']
65
+ #puts 'DB FILE=' + File.join(Rails.root, 'config', 'database.yml').to_s
66
+ if defined?(ActiveRecord) && File.exist?(File.join(Rails.root, 'config', 'database.yml'))
67
+ c2.extra_requires += ['active_record']
68
+ c2.database = Rails.configuration.database_configuration[Rails.env]
69
+ else
70
+ #puts 'NOT DOING ACTIVERECORD'
71
+ end
72
+ c2.merged_gems.merge!(get_required_gems) if defined?(Bundler)
73
+ SimpleWorker.logger.debug "MODELS " + c2.models.inspect
74
+ SimpleWorker.logger.debug "MAILERS " + c2.mailers.inspect
75
+ SimpleWorker.logger.debug "DATABASE " + c2.database.inspect
76
+ #SimpleWorker.logger.debug "GEMS " + c2.gems.inspect
77
+ end
78
+ end_time = Time.now
79
+ SimpleWorker.logger.info "SimpleWorker initialized. Duration: #{((end_time.to_f-start_time.to_f) * 1000.0).to_i} ms"
80
+ end
81
+ end
82
+
83
+
84
+ def get_required_gems
85
+ gems_in_gemfile = Bundler.environment.dependencies.select { |d| d.groups.include?(:default) }
86
+ SimpleWorker.logger.debug 'gems in gemfile=' + gems_in_gemfile.inspect
87
+ gems = {}
88
+ specs = Bundler.load.specs
89
+ SimpleWorker.logger.debug 'Bundler specs=' + specs.inspect
90
+ SimpleWorker.logger.debug "gems_to_skip=" + self.class.gems_to_skip.inspect
91
+ specs.each do |spec|
92
+ SimpleWorker.logger.debug 'spec.name=' + spec.name.inspect
93
+ SimpleWorker.logger.debug 'spec=' + spec.inspect
94
+ if self.class.gems_to_skip.include?(spec.name)
95
+ SimpleWorker.logger.debug "Skipping #{spec.name}"
96
+ next
97
+ end
98
+ # next if dep.name=='rails' #monkey patch
99
+ gem_info = {:name=>spec.name, :version=>spec.version}
100
+ gem_info[:auto_merged] = true
101
+ gem_info[:merge] = true
102
+ # Now find dependency in gemfile in case user set the require
103
+ dep = gems_in_gemfile.find { |g| g.name == gem_info[:name] }
104
+ if dep
105
+ SimpleWorker.logger.debug 'dep found in gemfile: ' + dep.inspect
106
+ SimpleWorker.logger.debug 'autorequire=' + dep.autorequire.inspect
107
+ gem_info[:require] = dep.autorequire if dep.autorequire
108
+ # spec = specs.find { |g| g.name==gem_info[:name] }
109
+ end
110
+ gem_info[:version] = spec.version.to_s
111
+ gems[gem_info[:name]] = gem_info
112
+ path = SimpleWorker::Service.get_gem_path(gem_info)
113
+ if path
114
+ gem_info[:path] = path
115
+ if gem_info[:require].nil? && dep
116
+ # see if we should try to require this in our worker
117
+ require_path = gem_info[:path] + "/lib/#{gem_info[:name]}.rb"
118
+ SimpleWorker.logger.debug "require_path=" + require_path
119
+ if File.exists?(require_path)
120
+ SimpleWorker.logger.debug "File exists for require"
121
+ gem_info[:require] = gem_info[:name]
122
+ else
123
+ SimpleWorker.logger.debug "no require"
124
+ # gem_info[:no_require] = true
125
+ end
126
+ end
127
+ end
128
+ # else
129
+ # SimpleWorker.logger.warn "Could not find gem spec for #{gem_info[:name]}"
130
+ # raise "Could not find gem spec for #{gem_info[:name]}"
131
+ # end
132
+ end
133
+ gems
29
134
  end
30
135
 
31
136
  def get_server_gems
@@ -43,11 +148,74 @@ module SimpleWorker
43
148
  config_data
44
149
  end
45
150
 
151
+ def merge(file)
152
+ f2 = SimpleWorker::MergeHelper.check_for_file(file, caller[2])
153
+ ret = {:name=>file, :path=>f2}
154
+ @merged[File.basename(f2)] = ret
155
+ end
156
+
157
+ # Merge a gem globally here
158
+ def merge_gem(gem_name, options={})
159
+ merged_gems[gem_name.to_s] = SimpleWorker::MergeHelper.create_gem_info(gem_name, options)
160
+ end
161
+
162
+ # Unmerge a global gem
163
+ def unmerge_gem(gem_name)
164
+ gs = gem_name.to_s
165
+ gem_info = {:name=>gs}
166
+ unmerged_gems[gs] = gem_info
167
+ merged_gems.delete(gs)
168
+ end
169
+
46
170
  end
47
171
 
48
- # Can merge a gem globally here
49
- def self.merge_gem(options)
50
172
 
173
+ class MergeHelper
174
+
175
+ # callerr is original file that is calling the merge function, ie: your worker.
176
+ # See Base for examples.
177
+ def self.check_for_file(f, callerr)
178
+ SimpleWorker.logger.debug 'Checking for ' + f.to_s
179
+ f = f.to_str
180
+ unless Utils.ends_with?(f, ".rb")
181
+ f << ".rb"
182
+ end
183
+ exists = false
184
+ if File.exist? f
185
+ exists = true
186
+ else
187
+ # try relative
188
+ # p caller
189
+ f2 = File.join(File.dirname(callerr), f)
190
+ puts 'f2=' + f2
191
+ if File.exist? f2
192
+ exists = true
193
+ f = f2
194
+ end
195
+ end
196
+ unless exists
197
+ raise "File not found: " + f
198
+ end
199
+ f = File.expand_path(f)
200
+ require f
201
+ f
202
+ end
203
+
204
+ def self.create_gem_info(gem_name, options={})
205
+ gem_info = {:name=>gem_name, :merge=>true}
206
+ if options.is_a?(Hash)
207
+ gem_info.merge!(options)
208
+ else
209
+ gem_info[:version] = options
210
+ end
211
+ path = SimpleWorker::Service.get_gem_path(gem_info)
212
+ SimpleWorker.logger.debug "Gem path=#{path}"
213
+ if !path
214
+ raise "Gem path not found for #{gem_name}"
215
+ end
216
+ gem_info[:path] = path
217
+ gem_info
218
+ end
51
219
  end
52
220
 
53
221
  end
@@ -96,24 +96,31 @@ module SimpleWorker
96
96
  end
97
97
  end
98
98
 
99
- def build_merged_file(filename, merge, unmerge, merged_gems, merged_mailers, merged_folders)
100
- # unless (merge && merge.size > 0) || (rged_gems && merged_gems.size > 0)
101
- # return filename
102
- # end
103
- merge = merge.nil? ? {} : merge.dup
104
- SimpleWorker.logger.debug "merge"
99
+ def build_merged_file(filename, merged, unmerge, merged_gems, merged_mailers, merged_folders)
100
+
101
+ merge = SimpleWorker.config.merged.dup
102
+ merge.merge!(merged) if merged
105
103
  if unmerge
106
104
  unmerge.each_pair do |x, y|
107
105
  deleted = merge.delete x
108
106
  SimpleWorker.logger.debug "Unmerging #{x}. Success? #{deleted}"
109
107
  end
110
108
  end
109
+
110
+ merged_gems = merged_gems.merge(SimpleWorker.config.merged_gems)
111
+ puts 'merged_gems=' + merged_gems.inspect
112
+ SimpleWorker.config.unmerged_gems.each_pair do |k, v|
113
+ puts 'unmerging gem=' + k.inspect
114
+ merged_gems.delete(k)
115
+ end
116
+ puts 'merged_gems_after=' + merged_gems.inspect
117
+
111
118
  #tmp_file = File.join(Dir.tmpdir(), File.basename(filename))
112
119
  tmp_file = File.join(Dir.tmpdir(), 'runner.rb')
113
120
  File.open(tmp_file, "w") do |f|
114
121
  # add some rails stuff if using Rails
115
122
 
116
- merge.each_pair do |k,v|
123
+ merge.each_pair do |k, v|
117
124
  SimpleWorker.logger.debug "merging #{k} into #{filename}"
118
125
  f.write("require_relative '#{k}'\n") # add(File.basename(m), m)
119
126
  end
@@ -139,37 +146,39 @@ end
139
146
  f.write "require 'action_mailer'\n"
140
147
  f.write "ActionMailer::Base.prepend_view_path('templates')\n"
141
148
  end
142
- if SimpleWorker.config.auto_merge
143
- if SimpleWorker.config.gems
144
- SimpleWorker.config.gems.each do |gem|
145
- puts "Bundling gem #{gem[:name]}..."
146
- f.write "$LOAD_PATH << File.join(File.dirname(__FILE__), '/gems/#{gem[:name]}/lib')\n" if gem[:merge]
149
+ #if SimpleWorker.config.auto_merge
150
+ if SimpleWorker.config.merged_gems
151
+ SimpleWorker.config.merged_gems.each_pair do |k, gem|
152
+ puts "Bundling gem #{gem[:name]}..."
153
+ if gem[:merge]
154
+ f.write "$LOAD_PATH << File.join(File.dirname(__FILE__), '/gems/#{gem[:name]}/lib')\n"
155
+ end
147
156
  # unless gem[:no_require]
148
- puts 'writing requires: ' + gem[:require].inspect
149
- if gem[:require].nil?
150
- gem[:require] = []
151
- elsif gem[:require].is_a?(String)
152
- gem[:require] = [gem[:require]]
153
- end
154
- puts gem[:require].inspect
155
- gem[:require].each do |r|
156
- puts 'adding require to file ' + r.to_s
157
- f.write "require '#{r}'\n"
158
- end
159
- # end
157
+ puts 'writing requires: ' + gem[:require].inspect
158
+ if gem[:require].nil?
159
+ gem[:require] = []
160
+ elsif gem[:require].is_a?(String)
161
+ gem[:require] = [gem[:require]]
160
162
  end
161
- end
162
- if SimpleWorker.config.models
163
- SimpleWorker.config.models.each do |model|
164
- f.write "require File.join(File.dirname(__FILE__),'#{File.basename(model)}')\n"
163
+ puts gem[:require].inspect
164
+ gem[:require].each do |r|
165
+ puts 'adding require to file ' + r.to_s
166
+ f.write "require '#{r}'\n"
165
167
  end
168
+ # end
166
169
  end
167
- if SimpleWorker.config.mailers
168
- SimpleWorker.config.mailers.each do |mailer|
169
- f.write "require File.join(File.dirname(__FILE__),'#{mailer[:name]}')\n"
170
- end
170
+ end
171
+ if SimpleWorker.config.merged
172
+ SimpleWorker.config.merged.each_pair do |k, v|
173
+ f.write "require_relative '#{File.basename(v[:path])}'\n"
174
+ end
175
+ end
176
+ if SimpleWorker.config.mailers
177
+ SimpleWorker.config.mailers.each do |mailer|
178
+ f.write "require_relative '#{mailer[:name]}'\n"
171
179
  end
172
180
  end
181
+ #end
173
182
  #f.write File.open(filename, 'r') { |mo| mo.read }
174
183
  f.write("require_relative '#{File.basename(filename)}'")
175
184
  end
@@ -187,7 +196,7 @@ end
187
196
  File.delete(fname2) if File.exist?(fname2)
188
197
  Zip::ZipFile.open(fname2, 'w') do |f|
189
198
  if merged_gems && merged_gems.size > 0
190
- merged_gems.each do |gem|
199
+ merged_gems.each_pair do |k, gem|
191
200
  next unless gem[:merge]
192
201
  # puts 'gem=' + gem.inspect
193
202
  path = gem[:path] # get_gem_path(gem)
@@ -226,8 +235,9 @@ end
226
235
  end
227
236
  end
228
237
 
229
- merge.each_pair do |k,v|
230
- # puts "merging #{m} into #{filename}"
238
+ puts "merge=" + merge.inspect
239
+ merge.each_pair do |k, v|
240
+ puts "merging k=#{k.inspect} v=#{v.inspect} into #{filename}"
231
241
  f.add(File.basename(v[:path]), v[:path])
232
242
  end
233
243
  if merged_mailers && merged_mailers.size > 0
@@ -0,0 +1,11 @@
1
+ module SimpleWorker
2
+
3
+ module Utils
4
+
5
+ def self.ends_with?(s, suffix)
6
+ suffix = suffix.to_s
7
+ s[-suffix.length, suffix.length] == suffix
8
+ end
9
+ end
10
+
11
+ end
data/lib/simple_worker.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require_relative 'simple_worker/utils'
1
2
  require_relative 'simple_worker/service'
2
3
  require_relative 'simple_worker/base'
3
4
  require_relative 'simple_worker/config'
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: simple_worker
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.7.3
5
+ version: 0.7.4
6
6
  platform: ruby
7
7
  authors:
8
8
  - Travis Reeder
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-08-01 00:00:00 Z
13
+ date: 2011-08-03 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: zip
@@ -52,6 +52,7 @@ files:
52
52
  - lib/simple_worker/runner.rb
53
53
  - lib/simple_worker/service.rb
54
54
  - lib/simple_worker/used_in_worker.rb
55
+ - lib/simple_worker/utils.rb
55
56
  - rails/init.rb
56
57
  - README.markdown
57
58
  homepage: http://github.com/appoxy/simple_worker
@@ -77,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
78
  requirements: []
78
79
 
79
80
  rubyforge_project:
80
- rubygems_version: 1.8.5
81
+ rubygems_version: 1.8.6
81
82
  signing_key:
82
83
  specification_version: 3
83
84
  summary: The official SimpleWorker gem for http://www.simpleworker.com