class Merb::BootLoader

Public Class Methods

after(klass) click to toggle source

Execute this boot loader after the specified boot loader.

Parameters

klass<~to_s>

The boot loader class after which this boot loader should be run.

Returns

nil

:api: plugin

# File lib/merb-core/bootloader.rb, line 42
def after(klass)
  move_klass(klass, 1)
  nil
end
after_app_loads(&block) click to toggle source

Execute a block of code after the app loads.

Parameters

&block

A block to be added to the callbacks that will be executed after the app loads.

:api: public

# File lib/merb-core/bootloader.rb, line 150
def after_app_loads(&block)
  after_load_callbacks << block
end
before(klass) click to toggle source

Execute this boot loader before the specified boot loader.

Parameters

klass<~to_s>

The boot loader class before which this boot loader should be run.

Returns

nil

:api: plugin

# File lib/merb-core/bootloader.rb, line 57
def before(klass)
  move_klass(klass, 0)
  nil
end
before_app_loads(&block) click to toggle source

Execute a block of code before the app loads but after dependencies load.

Parameters

&block

A block to be added to the callbacks that will be executed before the app loads.

:api: public

# File lib/merb-core/bootloader.rb, line 162
def before_app_loads(&block)
  before_load_callbacks << block
end
before_master_shutdown(&block) click to toggle source

Execute a block of code before master process is shut down. Only makes sense on platforms where Merb server can use forking.

Parameters

&block

A block to be added to the callbacks that will be executed before master process is shut down.

:api: public

# File lib/merb-core/bootloader.rb, line 175
def before_master_shutdown(&block)
  before_master_shutdown_callbacks << block
end
before_worker_shutdown(&block) click to toggle source

Execute a block of code before worker process is shut down. Only makes sense on platforms where Merb server can use forking.

Parameters

&block

A block to be added to the callbacks that will be executed before worker process is shut down.

:api: public

# File lib/merb-core/bootloader.rb, line 188
def before_worker_shutdown(&block)
  before_worker_shutdown_callbacks << block
end
default_framework() click to toggle source

Set up the default framework

Returns

nil

:api: plugin @overridable

# File lib/merb-core/bootloader.rb, line 125
def default_framework
  %w[view model helper controller mailer part].each do |component|
    Merb.push_path(component.to_sym, Merb.root_path("app/#{component}s"))
  end
  Merb.push_path(:application,  Merb.root_path("app" / "controllers" / "application.rb"))
  Merb.push_path(:config,       Merb.root_path("config"), nil)
  Merb.push_path(:router,       Merb.dir_for(:config), (Merb::Config[:router_file] || "router.rb"))
  Merb.push_path(:lib,          Merb.root_path("lib"), nil)
  Merb.push_path(:merb_session, Merb.root_path("merb" / "session"))
  Merb.push_path(:log,          Merb.log_path, nil)
  Merb.push_path(:public,       Merb.root_path("public"), nil)
  Merb.push_path(:stylesheet,   Merb.dir_for(:public) / "stylesheets", nil)
  Merb.push_path(:javascript,   Merb.dir_for(:public) / "javascripts", nil)
  Merb.push_path(:image,        Merb.dir_for(:public) / "images", nil)
  nil
end
finished?(bootloader) click to toggle source

Determines whether or not a specific bootloader has finished yet.

Parameters

bootloader<String, Class>

The name of the bootloader to check.

Returns

Boolean

Whether or not the bootloader has finished.

:api: private

# File lib/merb-core/bootloader.rb, line 114
def finished?(bootloader)
  self.finished.include?(bootloader.to_s)
end
inherited(klass) click to toggle source

Adds the inheriting class to the list of subclasses in a position specified by the before and after methods.

Parameters

klass<Class>

The class inheriting from Merb::BootLoader.

Returns

nil

:api: plugin

Calls superclass method
# File lib/merb-core/bootloader.rb, line 27
def inherited(klass)
  subclasses << klass.to_s
  super
end
move_klass(klass, where) click to toggle source

Move a class that is inside the bootloader to some place in the Array, relative to another class.

Parameters

klass<~to_s>

The klass to move the bootloader relative to

where<Integer>

0 means insert it before; 1 means insert it after

Returns

nil

:api: private

# File lib/merb-core/bootloader.rb, line 75
def move_klass(klass, where)
  index = Merb::BootLoader.subclasses.index(klass.to_s)
  if index
    Merb::BootLoader.subclasses.delete(self.to_s)
    Merb::BootLoader.subclasses.insert(index + where, self.to_s)
  end
  nil
end
run() click to toggle source

Runs all boot loader classes by calling their run methods.

Returns

nil

:api: plugin

# File lib/merb-core/bootloader.rb, line 90
def run
  Merb.started = true
  subklasses = subclasses.dup
  until subclasses.empty?
    time = Time.now.to_i
    bootloader = subclasses.shift
    Merb.logger.debug!("Loading: #{bootloader}") if Merb.verbose_logging?
    Object.full_const_get(bootloader).run
    Merb.logger.debug!("It took: #{Time.now.to_i - time}") if Merb.verbose_logging?
    self.finished << bootloader
  end
  self.subclasses = subklasses
  nil
end