lib/nitro/part.rb in nitro-0.30.0 vs lib/nitro/part.rb in nitro-0.31.0
- old
+ new
@@ -1,15 +1,70 @@
module Nitro
# A part is a module of reusable functionality encapsulated as
# a mini site/app. You can require (include) multiple parts in
# your application. A part is in essence a high level component.
-
+#
+# The directory structure of a part mirrors the structure
+# of a typicall web application. By conventions we put the
+# main directories of parts in a root directory called 'part'.
+#
+# Let's demonstrate the above with an example. Two parts are
+# defined here. A user management part (users) and a CMS
+# (content). A typical dir structure goes like this ($ is a
+# directory in the load path, this means you can put parts in
+# multiple places as long as the are in the load path):
+#
+# $/part # parts will be stored here.
+#
+# $/part/users.rb # helper file used to 'require' the part.
+# $/part/users/public/
+# $/part/users/controller.rb
+# $/part/users/controller/xml.rb
+# $/part/users/model/user.rb
+# $/part/users/model/acl.rb
+# $/part/users/template/login.xhtml
+# $/part/users/template/form.xinc
+# $/part/users/run.rb # starts an 'example' application for this part.
+#
+# $/part/content.rb
+# $/part/content/controller.rb
+# $/part/content/model.rb
+# ...
+#
+# Given this direcotry structure you can 'require' a part
+# like this:
+#
+# require 'part/users'
+# require 'part/content'
+#
+# The helper files (for example the file part/users.rb) typically
+# require the part files needed by default.
+#
+# The 'example' application start files (for example part/users/run.rb)
+# are optional. If present, they start a small application that
+# demonstrates the usage of the part. In the example app, the main
+# part controller is mounted at the root ('/'). Typically, in
+# your own applications, you will mount the controller as needed,
+# (for example: 'users' => UsersController,
+# 'blog' => 'ContentController')
+#
+# The files that reside in the public directory are typically
+# copied by a code generator to your application public dir.
+#
+# Part controllers setup the template root stack to lookup
+# templates in their local template dir (for example part/users/template)
+# if a template is not found in the applications normal template
+# root. In essence, by requiring a part a target application,
+# 'inherits' its templates. If you want to customize (override)
+# one template, just place a template with the same name in the
+# respective directory in the application template root.
+
class Part
# Require (include) a part in the current application.
- def self.require(name)
+ def self.require name
Logger.debug "Requiring part '#{name}'." if $DBG
Kernel.require 'part/' + name + '/run.rb'
end
end