Class: Merb::BootLoader::BuildFramework

Inherits:
Merb::BootLoader show all
Defined in:
lib/merb-core/bootloader.rb

Overview

Build the framework paths.

By default, the following paths will be used:

application

Merb.root/app/controller/application.rb

config

Merb.root/config

lib

Merb.root/lib

log

Merb.root/log

view

Merb.root/app/views

model

Merb.root/app/models

controller

Merb.root/app/controllers

helper

Merb.root/app/helpers

mailer

Merb.root/app/mailers

part

Merb.root/app/parts

To override the default, set Merb::Config in your initialization file. Merb::Config takes a Hash whose key is the name of the path, and whose values can be passed into Merb.push_path (see Merb.push_path for full details).

Notes

All paths will default to Merb.root, so you can get a flat-file structure by doing Merb::Config = {}.

Example

Merb::Config[:framework] = {
  :view   => Merb.root / "views",
  :model  => Merb.root / "models",
  :lib    => Merb.root / "lib",
  :public => [Merb.root / "public", nil]
  :router => [Merb.root / "config", "router.rb"]
}

That will set up a flat directory structure with the config files and controller files under Merb.root, but with models, views, and lib with their own folders off of Merb.root.

Class Method Summary collapse

Methods inherited from Merb::BootLoader

after, after_app_loads, before, before_app_loads, before_master_shutdown, before_worker_shutdown, default_framework, finished?, inherited, move_klass

Class Method Details

.build_frameworkObject

Sets up merb paths to support the app’s file layout. First, config/framework.rb is checked, next we look for Merb.root/framework.rb, finally we use the default merb layout (Merb::BootLoader.default_framework)

This method can be overriden to support other application layouts.

Returns

nil

:api: plugin



342
343
344
345
346
347
348
349
350
351
352
353
354
355
# File 'lib/merb-core/bootloader.rb', line 342

def build_framework
  if File.exists?(Merb.root / "config" / "framework.rb")
    require Merb.root / "config" / "framework"
  elsif File.exists?(Merb.root / "framework.rb")
    require Merb.root / "framework"
  else
    Merb::BootLoader.default_framework
  end
  (Merb::Config[:framework] || {}).each do |name, path|
    path = Array(path)
    Merb.push_path(name, path.first, path.length == 2 ? path[1] : "**/*.rb")
  end
  nil
end

.runObject

Builds the framework directory structure.

Returns

nil

:api: plugin



326
327
328
329
330
# File 'lib/merb-core/bootloader.rb', line 326

def run
  $:.push Merb.root unless Merb.root == File.expand_path(Dir.pwd)
  build_framework
  nil
end