Class: WebResourceBundler::Bundler

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/web_resource_bundler.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeBundler

Returns a new instance of Bundler.



23
24
25
26
27
28
29
30
# File 'lib/web_resource_bundler.rb', line 23

def initialize
  @filters = {} 
  @settings = nil
  @file_manager = FileManager.new('','') 
  @parser = BlockParser.new
  @logger = nil 
  @settings_correct = false
end

Instance Attribute Details

#filtersObject (readonly)

Returns the value of attribute filters.



21
22
23
# File 'lib/web_resource_bundler.rb', line 21

def filters
  @filters
end

#loggerObject (readonly)

Returns the value of attribute logger.



21
22
23
# File 'lib/web_resource_bundler.rb', line 21

def logger
  @logger
end

#settingsObject (readonly)

Returns the value of attribute settings.



21
22
23
# File 'lib/web_resource_bundler.rb', line 21

def settings
  @settings
end

#settings_correctObject (readonly)

Returns the value of attribute settings_correct.



21
22
23
# File 'lib/web_resource_bundler.rb', line 21

def settings_correct
  @settings_correct
end

Instance Method Details

#process(block, domain, protocol) ⇒ Object

main method to process html text block



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/web_resource_bundler.rb', line 52

def process(block, domain, protocol)
  if @settings_correct
    begin
      filters = filters_array
      #passing current request domain and protocol to each filter
      filters.each do |filter|
        SettingsManager.set_request_specific_settings!(filter.settings, domain, protocol)
      end
      #parsing html text block, creating BlockData instance
      block_data = @parser.parse(block)
      #if filters set and no bundle files exists we should process block data
      unless filters.empty? or bundle_upto_date?(block_data)
        #reading files content and populating block_data
        read_resources!(block_data)
        #applying filters to block_data
        block_data.apply_filters(filters)
        #writing resulted files with filtered content on disk
        write_files_on_disk(block_data)
        @logger.info("files written on disk")
        return block_data
      end
      #bundle up to date, returning existing block with modified file names 
      block_data.apply_filters(filters)
      return block_data
    rescue Exceptions::WebResourceBundlerError => e
      @logger.error(e.to_s)
      return nil
    rescue Exception => e
      @logger.error(e.backtrace.join("\n") + "Unknown error occured: " + e.to_s)
      return nil
    end
  end
end

#set_settings(settings) ⇒ Object

this method should be used to turn onoff filters on particular request



45
46
47
48
49
# File 'lib/web_resource_bundler.rb', line 45

def set_settings(settings)
  @settings.merge!(settings)
  @settings_correct = SettingsManager.settings_correct?(@settings)
  set_filters(@settings, @file_manager)
end

#setup(rails_root, rails_env) ⇒ Object

this method should called in initializer



33
34
35
36
37
38
39
40
41
# File 'lib/web_resource_bundler.rb', line 33

def setup(rails_root, rails_env)
  @settings = SettingsManager.create_settings(rails_root, rails_env)
  @settings_correct = SettingsManager.settings_correct?(@settings)
  if @settings_correct
    @logger = create_logger(@settings[:log_path]) unless @logger
    @file_manager.resource_dir, @file_manager.cache_dir = @settings[:resource_dir], @settings[:cache_dir]
    set_filters(@settings, @file_manager) 
  end
end