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 +0 -84
 - data/lib/simple_worker/base.rb +37 -68
 - data/lib/simple_worker/config.rb +174 -6
 - data/lib/simple_worker/service.rb +45 -35
 - data/lib/simple_worker/utils.rb +11 -0
 - data/lib/simple_worker.rb +1 -0
 - metadata +4 -3
 
    
        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
         
     | 
    
        data/lib/simple_worker/base.rb
    CHANGED
    
    | 
         @@ -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 =  
     | 
| 
       77 
     | 
    
         
            -
                     
     | 
| 
       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 
     | 
    
         
            -
                     
     | 
| 
      
 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 
     | 
    
         
            -
             
     | 
| 
      
 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 = 
     | 
| 
      
 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. 
     | 
| 
      
 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 
     | 
| 
      
 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 
     | 
    
         
            -
                     
     | 
| 
       386 
     | 
    
         
            -
                     
     | 
| 
      
 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 
     | 
    
         
            -
                       
     | 
| 
      
 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 
     | 
    
         
            -
             
     | 
| 
       444 
     | 
    
         
            -
                      end
         
     | 
| 
       445 
     | 
    
         
            -
                    end
         
     | 
| 
       446 
     | 
    
         
            -
                    unless merged_gems. 
     | 
| 
      
 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 
     | 
    
         
            -
             
     | 
| 
      
 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]
         
     | 
    
        data/lib/simple_worker/config.rb
    CHANGED
    
    | 
         @@ -16,16 +16,121 @@ module SimpleWorker 
     | 
|
| 
       16 
16 
     | 
    
         
             
                              :global_attributes,
         
     | 
| 
       17 
17 
     | 
    
         
             
                              :models,
         
     | 
| 
       18 
18 
     | 
    
         
             
                              :mailers,
         
     | 
| 
       19 
     | 
    
         
            -
                               
     | 
| 
      
 19 
     | 
    
         
            +
                              #:gems, # todo: move anything that uses this to merged_gems
         
     | 
| 
       20 
20 
     | 
    
         
             
                              :database,
         
     | 
| 
       21 
21 
     | 
    
         
             
                              :extra_requires,
         
     | 
| 
       22 
     | 
    
         
            -
                               
     | 
| 
       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,  
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
       102 
     | 
    
         
            -
             
     | 
| 
       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 
     | 
    
         
            -
             
     | 
| 
       144 
     | 
    
         
            -
             
     | 
| 
       145 
     | 
    
         
            -
             
     | 
| 
       146 
     | 
    
         
            -
             
     | 
| 
      
 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 
     | 
    
         
            -
             
     | 
| 
       149 
     | 
    
         
            -
             
     | 
| 
       150 
     | 
    
         
            -
             
     | 
| 
       151 
     | 
    
         
            -
             
     | 
| 
       152 
     | 
    
         
            -
             
     | 
| 
       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 
     | 
    
         
            -
             
     | 
| 
       162 
     | 
    
         
            -
             
     | 
| 
       163 
     | 
    
         
            -
             
     | 
| 
       164 
     | 
    
         
            -
                          f.write "require  
     | 
| 
      
 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 
     | 
    
         
            -
             
     | 
| 
       168 
     | 
    
         
            -
             
     | 
| 
       169 
     | 
    
         
            -
             
     | 
| 
       170 
     | 
    
         
            -
                         
     | 
| 
      
 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. 
     | 
| 
      
 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 
     | 
| 
       230 
     | 
    
         
            -
             
     | 
| 
      
 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
         
     | 
    
        data/lib/simple_worker.rb
    CHANGED
    
    
    
        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. 
     | 
| 
      
 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- 
     | 
| 
      
 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. 
     | 
| 
      
 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
         
     |