Hi all, Thanks for the responses to the thread "FuseQ and sharing fuses among apps".
I would like to re-look at this topic, but without specifics. My aim is to find the best way to drag-and-drop fuseactions so that they can be used in multiple applications. Especially if they are retained in a repository designed specifically for reuse. Let me take a step out of the box, and attempt to describe the "problem" mentioned in that thread, without referring to mappings, fuses and so-on. Either I have missed the boat somewhere and do not understand how accomplish a specific task using fusebox, or indeed Fusebox (and other variations thereof) cannot address my "problem". - A definition: "Application". Application is a set of fuses and fuseactions that reside in a specific directory tree on one's webserver. The application is accessed through an index.cfm file in the root directory of that application. Code in the deeper directories is accessed through defining the appropriate paths in the fbx_cicuits.cfm, and then calling the FuseAction appropriately to "get there". - The "professors" of fusebox keep emphasizing code reuse, and "drag-and-drop" reuse. I agree that FB does this very well, but it does seem to rely on directory locations on the disk, in that all fuses and fuseactions must reside in the same directory, or deeper, than the point at which index.cfm for a specific application is called. Can someone confirm that this is indeed correct - I have not been able to show otherwise. Reusing code in FB3: If I wish to "drag and drop" an entire fuseaction, that belongs in a completely *different* application (in a different directory, or even hard drive for that matter), then how do I do that? Or stated differently, I want a common REPOSITORY for a whole lot of fuseactions that can easily be dragged and dropped into my applications. Possible Answer 1: Physically COPY all the files from the one application to the other and update circuits files and XFA's appropriately. Problem: What happens when I modify the code in the drag-and-drop fuse? Must I make updates to all the instances where I have dragged-and-dropped this code? If so, this is not only counterproductive, but can lead to synchronization problems. Possible Answer 2: Use CFMODULE, and use this to call the other application's fuseaction. That works, partially, but I cannot share variable scopes between the two applications - a drawback in that I would like to keep certain settings, layout, Data source names etc. This is apparently where FuseQ comes in, leaving many calls to CFMODULE behind, and overcoming some of the drawbacks that CFMODULE presents, like variable scope sharing. I am hoping that fuseboxers better understand my problem, if indeed I have a problem... My proposed solution? Keep using the fbx_cicuits.cfm file for "application" mappings - as you need to be able to tell the application what FuseAction is "mapped" to what directory of fuses. Also, to use some sort of other mapping system that does not restrict you the deeper levels of the directory tree in which the application is placed. Rather to let you reuse fuseactions that are located anywhere on the webserver. Examining the upcoming CFMX - it does this like so, for CFCs (ColdFusion Components) - it lets me describe where my CFC is, and it does not have to be located near my application. It can be in a CFC repository if I want. This is done through calling the CFC as so : <cfinvoke component="appResources.components.tellTime "method="getLocalTime"> In this example appResources can be located in the root of where your application is being called, or in another arbitrary directory. In the latter case, you then have to map appResources in the CF administrator to tell CF where it is on the disk. So this could be e:\wwwroot\appResources\components\tellTime Or if you setup a CF mapping can be d:\mycomponents\appResources\components\tellTime Can fusebox do the same thing with regard to physical code location? I don't think so. Looking at other programming environments: C++, Delphi etc. allow you to define reused classes etc. through defining library locations. I can use these in more than one application from anywhere on the disk. I never have to recopy the code for a class in order to reuse it. Fusebox currently does not allow anything like this. My suggestion is to be to extend FB (and hopefully FuseQ) to do this, i.e. by letting you your define circuits in a similar fashion as what CFMX does with CFCs. In conclusion: Unless I am mistaken, this is a major failing of Fusebox: Code cannot be reused among applications, without physically copying the code, keeping it the same directory tree or making messy workarounds. I look forward to debate around this. Thanks all. Steven ==^================================================================ This email was sent to: [email protected] EASY UNSUBSCRIBE click here: http://topica.com/u/?bUrFMa.bV0Kx9 Or send an email to: [EMAIL PROTECTED] T O P I C A -- Register now to manage your mail! http://www.topica.com/partner/tag02/register ==^================================================================
