Hello @2010!

I see there is interest about multi-fab implementation. I agree that my
solution with traversing is auto-magical and may lead to strange
behaviours and hard debugging.

Here is what I think multi-fab behaviour needs:
- easy (no boiler-plate code) integration between fabfiles
- less or no magic
- covers most use cases + scaling
- be Python
- override-able with parameter or/and default off

First four are hard to achieve, but there is always an compromise. I
think this should be thought through very carefully.

Cons for using traversing:
- magic (needs good documentation)
- unsuable in chrooted environment
- ... more?

Another solution that seems more clean (and maybe opens Fabric's snippet
share) is to create an "fabric.snippets" namespace. Together with
templates for quick development of such packages we would create a wide
codebase. 
So I would go and use "fabric.snippets.domen" package/module and fill it
it with functions/environment/whatever.

Options integrating this in Fabric are endless (since we are finally
doing Python). For example one could do

Fabric --lib domen -l

or still easily force it in fabfile.py:

from fabric.snippets.domen import *

Feedback is appreciated;)

Greetings, Domen

On Wed, 2009-12-30 at 13:58 -0500, Jeff Forcier wrote:
> Hi all,
> 
> I've updated http://code.fabfile.org/issues/show/122 since it seemed
> relevant to this discussion.
> 
> The most obvious solution seems to be to make ~/.fabricrc a full
> fabfile of sorts and to simply process it prior to loading the "main"
> (per-project / based on user's cwd) fabfile. (Or leave it alone and
> additionally auto-search for a ~/.fabfile.py or similar.)
> 
> We could also change the logic so it no longer stops at the first
> fabfile but searches up to filesystem root and loads all found
> fabfiles in reverse order (so the "closest" fabfile overrides "farther
> away" ones.) This sounds closer to what Domen wants, and is possibly
> cleaner than the "home dir + local" approach in the previous
> paragraph.
> 
> (Steve, is your .fabrc solution different from either of those? is it
> documented anywhere? I don't recall seeing it previously...)
> 
> The major problem with any multiple-fabfile approach, however, is that
> it can break the ability to understand a given fabfile just by reading
> it, because -- once http://code.fabfile.org/issues/show/21 is
> implemented to allow calling of tasks by name -- the internal mapping
> of task names/objects will have >1 fabfiles' worth of tasks in it.
> 
> This makes me kind of uncomfortable, though I realize how useful it
> could still be. It's one of those things where I have to balance
> "magical" usefulness against "non-surprising" naivite.
> 
> Thoughts welcome :)
> 
> -Jeff
> 
> On Wed, Dec 30, 2009 at 11:04 AM, Steve Steiner (listsin)
> <list...@integrateddevcorp.com> wrote:
> >
> > On Dec 30, 2009, at 10:48 AM, Domen Kožar wrote:
> >> Current solution:
> >> Import my "global project fabfile" from /home/user/code/fabfile.py in
> >> every project.
> >
> > I do the same thing, only from a ~/.fabrc directory (or something like 
> > that, I forget).  I remember there was some talk about adding this but I 
> > didn't pay much attention because I had already implemented my own solution.
> >
> > I'm not sure I like the magic up-traversal idea at all; even one level up 
> > things have no relation to where I start and, especially on our servers, up 
> > is not even an option from the jailed shell.  The highest level you'd reach 
> > would be ~ anyway and the .fabrc solution already handles that.
> >
> > S
> >
> >
> >
> > _______________________________________________
> > Fab-user mailing list
> > Fab-user@nongnu.org
> > http://lists.nongnu.org/mailman/listinfo/fab-user
> >
> 
> 
> 





_______________________________________________
Fab-user mailing list
Fab-user@nongnu.org
http://lists.nongnu.org/mailman/listinfo/fab-user

Reply via email to