Folks,

I spent today "cracking the code" on how to implement a more dynamic Lift
development cycle.  Specifically, I figured out how to support (during
development mode) having changes in compiled code reflected in the running
application.  The change to your Lift app will be a change in how you do
things in Boot.scala.  Basically, anything that could change between page
loads will be wrapped as such in Boot:

LiftRules.dynamicDevelopmentMode(List("com.liftcode.model",
"com.liftcode.lib"))(() => {
  LiftRules.dispatch.append {...}

  LiftRules.setSiteMap(....)
})

The list is a list of packages to exclude from the dynamic reloading.
Because schemification isn't going to happen on every page reload, it's best
not to reload the models.

The dynamic mode will impose the following limitations:

   - Lift will only service one request at once in development mode
   - Page loads in development mode will be 10x-50x slower than in
   non-development mode
   - Comet objects will not change once they've been instantiated
   - There will cases where classes created in one classloader are not
   recognized as the same class for casting and/or pattern matching purposes if
   the classes are created across calls
   - There may be problems related to running out of PermGen space because
   each page reload will cause all the applications classes to be reloaded...
   and this may happen faster than the classes are GCed.

With those limitations, do you guys thing the feature would be valuable?
Should it be part of development mode or should there be another demarcation
of the dynamic reload mode?

Thanks,

David

-- 
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Surf the harmonics

-- 
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en.

Reply via email to