Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: Overall Directory Organization

by dsheroh (Monsignor)
on Nov 10, 2009 at 11:53 UTC ( [id://806195]=note: print w/replies, xml ) Need Help??


in reply to Overall Directory Organization

Here's what I'm currently using, although it's admittedly not CPAN-compatible, since I use git to deploy my webapps, so CPAN isn't a concern for them. Assuming I'm building My Web App:
  • ~/src/my_web_app/
    • TODO
    • MyWebApp/
      • (general project-specific modules defining the underlying object/data model)
      • CGI/
        • (plugin modules for connecting the object/data model to the web interface)
    • cgi/
      • index.fcgi
      • tpl/
        • (page-generation templates)
      • (other misc files which need to be accessible by web)
    • local/
      • (misc host-specific support files which, for whatever reason, aren't put into the main git repo)
    • t/
      • (test scripts)
    • util/
      • (any command-line tools specific to the project, including cron scripts)
With this structure, installing on a new host is a simple matter of cloning the project out of git and symlinking the cgi/ directory into the host's web root. Depending on how the host's operating system handles paths doing a ../ from a symlinked directory, it may also be necessary to symlink MyWebApp/ into one of the dirs in @INC, but that's usually not required, thanks to FindBin. (Obviously, I only work with *nix-derived OSes. I don't know whether Windows has a suitable equivalent to symlinks or, if it does, what that might be.)

If I were to want to build a CPAN distribution out of one of these projects, I would expect it to mostly just be a matter of creating a distribution dir (call it dist/ and symlinking the relevant bits into it - MyWebApp/ into dist/lib/, t/ into dist/ to replace the default dist/t/, and cgi/ and util/ to... well... I don't know where because I've never packaged executables for CPAN, only modules.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://806195]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (2)
As of 2024-04-25 19:28 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found