Class: Merb::BootLoader::BuildFramework

Inherits:
Merb::BootLoader show all
Defined in:
merb-core/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[: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.

All paths will default to Merb.root, so if you want a flat-file structure simply by doing: Merb::Config[:framework] = {}.

The following code sets 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: 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"] }

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

+ (nil) build_framework

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)

Overridable:



296
297
298
299
300
301
302
303
304
305
306
307
308
309
# File 'merb-core/lib/merb-core/bootloader.rb', line 296

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

+ (nil) run

Builds the framework directory structure.

Returns:

  • (nil)


278
279
280
281
282
# File 'merb-core/lib/merb-core/bootloader.rb', line 278

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