Module: Waves::Layers::MVC

Defined in:
lib/layers/mvc.rb

Overview

The MVC layer establishes the Models, Views, Controllers, and Helpers namespaces inside a Waves application. In each namespace, undefined constants are handled by AutoCode, which loads the constant from the correct file in the appropriate directory if it exists, or creates from default otherwise.

Class Method Summary collapse

Class Method Details

.included(app) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/layers/mvc.rb', line 9

def self.included( app )
  
  def app.models ; self::Models ; end
  def app.views ; self::Views ; end
  def app.controllers ; self::Controllers ; end
  def app.helpers ; self::Helpers ; end
  
  app.auto_create_module( :Models ) do
    include AutoCode
    auto_create_class :Default
    auto_load :Default, :directories => [:models]
  end
  
  app.auto_eval( :Models ) do
    auto_create_class true, app::Models::Default
    auto_load true, :directories => [ :models ]
  end

  app.auto_create_module( :Views ) { include AutoCode }
  
  app.auto_eval( :Views ) do
    auto_create_class :Default, Waves::Views::Base
    auto_load :Default, :directories => [:views]
    auto_create_class true, app::Views::Default
    auto_load true, :directories => [ :views ]
  end

  app.auto_create_module( :Controllers ) { include AutoCode }
  
  app.auto_eval( :Controllers ) do
    auto_create_class :Default, Waves::Controllers::Base
    auto_load :Default, :directories => [:controllers]
    auto_create_class true, app::Controllers::Default
    auto_load true, :directories => [ :controllers ]          
  end

  app.auto_create_module( :Helpers ) do
    include AutoCode
    auto_create_module { include Waves::Helpers::Default }
    auto_load true, :directories => [ :helpers ]
  end          

end