Class Merb::BootLoader::BuildFramework
In: merb-core/lib/merb-core/bootloader.rb
Parent: Merb::BootLoader

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[:framework] in your initialization file. Merb::Config[:framework] 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[:framework] = {}.

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.

Methods

Public Class methods

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 @overridable

[Source]

     # File merb-core/lib/merb-core/bootloader.rb, line 342
342:     def build_framework
343:       if File.exists?(Merb.root / "config" / "framework.rb")
344:         require Merb.root / "config" / "framework"
345:       elsif File.exists?(Merb.root / "framework.rb")
346:         require Merb.root / "framework"
347:       else
348:         Merb::BootLoader.default_framework
349:       end
350:       (Merb::Config[:framework] || {}).each do |name, path|
351:         path = Array(path)
352:         Merb.push_path(name, path.first, path.length == 2 ? path[1] : "**/*.rb")
353:       end
354:       nil
355:     end

Builds the framework directory structure.

Returns

nil

:api: plugin

[Source]

     # File merb-core/lib/merb-core/bootloader.rb, line 326
326:     def run
327:       $:.push Merb.root unless Merb.root == File.expand_path(Dir.pwd)
328:       build_framework
329:       nil
330:     end

[Validate]