[web-devel] Minor delay of Yesod 0.8
greg at gregweber.info
Mon Apr 18 20:05:09 CEST 2011
The next step in this is to get the browser to automatically refresh. The
more efficient approach is to use a browser plugin that can listen for a
signal from an application. However, a more convenient default is something
like live.js (livejs.com). Once injected into a page it polls the
application for a new page by making a head request and checking a header
like an ETag.
On Mon, Apr 18, 2011 at 7:56 AM, Michael Snoyman <michael at snoyman.com>wrote:
> Hi all,
> Just wanted to let you know: there's been a minor delay in the 0.8 release
> of Yesod, all for good reasons. Rick Richardson and Greg Weber have put in a
> lot of work on the MongoDB backend for Persistent, and now we'll be able to
> include it (as an alpha) with this release. Congrats to them, this is very
> The second reason is that I decided to be naughty and completely disregard
> my feature freeze. As we've discussed recently, there are some issues with
> our hint-based wai-handler-devel approach. Without going into too many
> details (both to keep from boring you, and because I have very little time
> before Passover starts), I've made the following modifications to the yesod
> scaffolding tool:
> * Running "yesod" by itself gives you a list of commands.
> * Running "yesod init" gives the behavior previously held by "yesod", i.e.
> generate a scaffolded site.
> * Running "yesod build" is *almost* identical to "cabal build", but with
> one change: it performs a dependency analysis of external files included by
> Template Haskell (Hamlet templates, routes, entity definitions) and changes
> modification times as needed to force cabal to build modules. For example,
> if "Handler/Root.hs" references "hamlet/root.hamlet", and the latter has a
> later modification time than the former, the former's modification times
> will be changed to match that of the latter.
> * Running "yesod devel" runs devel server. Instead of using hint, the devel
> server now uses cabal for the compiling (passing in a special "devel" flag)
> and direct-plugins to load up the compiled code.
> In order to make this work, there are a few necessary modifications to an
> individual site:
> * The "Controller" module now needs to have a "withDevelApp" function,
> which must be of type "Dynamic". The internal type of this must be
> "(Application -> IO ()) -> IO ()".
> * The cabal file must provide a library section. The library should only be
> built when the devel flag is passed in, it should be compiled with "-O0" (to
> speed up compiling) and executables are disabled (also for speed).
> * direct-plugins can only load up installed packages, so "yesod devel" will
> actually install your package.
> * The scaffolded site has already been updated to work properly with "yesod
> devel", so you can base your modifications on that.
> The only bug I'm aware of right now is that if a file disappears at the
> wrong time then the call to get the modification time will fail. This may
> seem far fetched, but it happened to me when saving a file with vim.
> Shouldn't be too hard to fix, I just don't have time right now.
> The code's on Yackage. If anyone wants to give it a shot, feel free.
> web-devel mailing list
> web-devel at haskell.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the web-devel