Module: Aerogel

Defined in:
lib/aerogel/core/reloader.rb,
lib/aerogel/core/core.rb,
lib/aerogel/core/cache.rb,
lib/aerogel/core/config.rb,
lib/aerogel/core/errors.rb,
lib/aerogel/core/version.rb

Overview

Middleware which checks and reloads modified files.

Defined Under Namespace

Modules: Assets, Cache, Config, Core, Db, Errors, Helpers, I18n, Render, Routes Classes: Application, Reloader

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.application_pathObject

Returns the value of attribute application_path.



8
9
10
# File 'lib/aerogel/core/core.rb', line 8

def application_path
  @application_path
end

.core_pathObject

Returns the value of attribute core_path.



8
9
10
# File 'lib/aerogel/core/core.rb', line 8

def core_path
  @core_path
end

Class Method Details

.configObject

Returns Aerogel application’s config object.



10
11
12
# File 'lib/aerogel/core/config.rb', line 10

def self.config
  @config ||= Configurator.new
end

.get_resource(type, filename, environment = nil) ⇒ Object

Returns filename of the most recent resource file of specified type.



109
110
111
# File 'lib/aerogel/core/core.rb', line 109

def self.get_resource( type, filename, environment = nil )
  get_resource_list( type, filename, environment ).last
end

.get_resource_list(type, wildcard, environment = nil, &block) ⇒ Object

Returns list of filenames of resources of specified type, environment sub-folders included, filtered by wildcard mask.

Resources are listed in a forward order of paths, files within each path listed in alphabetic order.

The resources are searched in following order:

path1 + wildcard
path1 + environment + wildcard
path2 + wildcard
path2 + environment + wildcard
etc


64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/aerogel/core/core.rb', line 64

def self.get_resource_list( type, wildcard, environment = nil, &block )
  resource_list = []
  get_resource_paths( type ) do |path, base_path|
    paths = Dir.glob( File.join( path, wildcard ) ).sort
    if environment
      paths << Dir.glob( File.join( path, environment.to_s, wildcard ) ).sort
    end
    # puts "Aerogel::get_resource_list: type=#{type} environment=#{environment} path=#{path}: #{paths}"
    if block_given?
      paths.each do |filename|
        relative_filename = filename.sub( /^#{path}\/?/, '' )
        yield filename, relative_filename, path, base_path
      end
    end
    resource_list << paths
  end
  resource_list.flatten
end

.get_resource_paths(type, &block) ⇒ Object

Returns list of paths for specified resource type.



41
42
43
44
45
46
47
48
49
# File 'lib/aerogel/core/core.rb', line 41

def self.get_resource_paths( type, &block )
  paths = []
  registered_paths( type ).each do |base_path|
    path = base_path[:type].nil? ? File.join( base_path[:path], type.to_s ) : base_path[:path]
    paths << { base_path: base_path, path: path }
    yield path, base_path if block_given?
  end
  paths.map {|p| p[:path] }
end

.get_reverse_resource_list(type, wildcard, environment = nil) ⇒ Object

Returns reversed list of filenames of resources of specified type, environment sub-folders included, filtered by wildcard mask.

Reverse order is applied to registered paths, but not to files within single path, which are listed in alphabetic order.

The resources are searched in following order:

path1 + wildcard
path1 + environment + wildcard
path2 + wildcard
path2 + environment + wildcard
etc


96
97
98
99
100
101
102
103
104
105
# File 'lib/aerogel/core/core.rb', line 96

def self.get_reverse_resource_list( type, wildcard, environment = nil )
  get_resource_paths( type ).reverse.map do |path|
    paths = Dir.glob( File.join( path, wildcard ) ).sort
    if environment
      paths << Dir.glob( File.join( path, environment.to_s, wildcard ) ).sort
    end
    # puts "Aerogel::get_resource_list: type=#{type} environment=#{environment} path=#{path}: #{paths}"
    paths
  end.flatten
end

.on_load(&block) ⇒ Object

Registers on-load callback.



155
156
157
158
# File 'lib/aerogel/core/core.rb', line 155

def self.on_load( &block )
  @on_load_callbacks ||= []
  @on_load_callbacks << block
end

.on_load_callbacksObject

Returns registered on-load callbacks.



149
150
151
# File 'lib/aerogel/core/core.rb', line 149

def self.on_load_callbacks
  @on_load_callbacks || []
end

.register_path(path, type = nil) ⇒ Object

Registers a new path for all resource loaders.

If type is not specified, then resource paths are formed by appending type to the given path.

If type is specified, given path is cosidered a final path for this resource type, and for this resource type only.



25
26
27
28
29
30
# File 'lib/aerogel/core/core.rb', line 25

def self.register_path( path, type = nil )
  @registered_paths ||= []
  path = File.expand_path( path )
  module_name = File.basename path
  @registered_paths << { path: path, module_name: module_name, type: type }
end

.registered_paths(type = nil) ⇒ Object

Returns registered paths. If type is specified, only resource paths containing this type are returned.



35
36
37
# File 'lib/aerogel/core/core.rb', line 35

def self.registered_paths( type = nil )
  @registered_paths.select{|p| type.nil? || p[:type].nil? || p[:type] == type }
end

.require_into(mod_class, filename) ⇒ Object

Requires file, loads into context of a module/class.



143
144
145
# File 'lib/aerogel/core/core.rb', line 143

def self.require_into( mod_class, filename )
  mod_class.class_eval File.read(filename), filename
end

.require_resources(type, wildcard, environment = nil) ⇒ Object

Require resources specified by type and wildcard.



115
116
117
118
119
120
121
122
123
124
125
# File 'lib/aerogel/core/core.rb', line 115

def self.require_resources( type, wildcard, environment = nil )
  files_to_require = Aerogel.get_resource_list( type, wildcard, environment )
  files_to_require.each do |filename|
    # begin
      require filename
    # rescue => e
    #  raise e # "Failed to load resource '#{filename}': #{e}"
    # end
  end
  true
end

.require_resources_reverse(type, wildcard, environment = nil) ⇒ Object

Require resources specified by type and wildcard in reverse order.



129
130
131
132
133
134
135
136
137
138
139
# File 'lib/aerogel/core/core.rb', line 129

def self.require_resources_reverse( type, wildcard, environment = nil )
  files_to_require = Aerogel.get_reverse_resource_list( type, wildcard, environment )
  files_to_require.each do |filename|
    # begin
      require filename
    # rescue => e
    #  raise e # "Failed to load resource '#{filename}': #{e}"
    # end
  end
  true
end

.versionObject

Returns module version.



13
14
15
# File 'lib/aerogel/core/core.rb', line 13

def self.version
  Aerogel::Core::VERSION
end