simple_worker 0.7.3 → 0.7.4

Sign up to get free protection for your applications and to get access to all the features.
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