
Jifty::Plugin::ClassLoader - Autogenerates application classes

Jifty::Plugin::ClassLoader loads additional model and action classes on behalf of the application out of the configured plugin classes.
Unlike,
Jifty::ClassLoader,
this class will only autogenerate classes if the plugin provides them.
The plugin classes are checked before the base Jifty classes,
so that a plugin can override the Jifty class,
just as any existing application classes will be loaded first.
Returns a new ClassLoader object.
Doing this installs a hook into @INC that allows Jifty::Plugin::ClassLoader to dynamically create needed classes if they do not exist already.
This works because if use/require encounters a blessed reference in @INC,
it will invoke the INC method with the name of the module it is searching for on the reference.
Takes two mandatory arguments,
base,
which should be the application's base path; and plugin which is the plugin classname.
The hook that is called when a module has been require'd that cannot be found on disk.
The following stub classes are auto-generated:
An empty application base class is created that doen't provide any methods or inherit from anything.
An empty class that descends from Jifty::Record is created.
An empty class that descends from Jifty::Collection is created.
An empty class that descends from Jifty::Notification.
An empty class that descends from Jifty::Dispatcher.
An empty class that descends from Jifty::Bootstrap.
An empty class that descends from Jifty::Upgrade.
An empty class that descends from Jifty::CurrentUser.
If Application::Model::Something is a valid model class,
then it creates a subclass of Jifty::Collection whose record_class is Application::Model::Something.
If Application::Model::Something is a valid model class,
then it creates a subclass of Jifty::Action::Record::Create,
Jifty::Action::Record::Update,
or Jifty::Action::Record::Delete whose record_class is Application::Model::Something.
Loads all of the application's Actions and Models.
It additionally require's all Collections and Create/Update actions for each Model base class -- which will auto-create them using the above code if they do not exist on disk.