We have a medium sized web application that is about 40 .pl and .pm files, not counting core & CPAN modules. It is running on exactly one site. The users like it. They'd like instances running with different (and maybe overlapping) data on 2 more domains.
Our packaging is lame. We were: falsely lazy, under some pressure to “just get it done”, learning Perl, originally just doing one instance of this app and working with artistic managers. Also, the dog ate our homework
For example, only the original developer trusted the home-brewed installer. As a result people copy files by hand or (ugh!) modify production files in place. We're a tiny group, right now just me. At times we have as many as 3 people working on the project. Usually the people working on the project are new to programming, Perl and Linux.
Our dream is a full-on Debian webapp policy compliment package. Sadly, history repeats. Management is much less artistic but the world still pressures us to be falsely lazy. I've got until Tuesday 8:00am to make general infrastructure improvements. (Then the priority is filing tax reports with the IRS)
Right now, my limited goals are, in order of importance:
- Finish by Tuesday 8:00am
Keep site specific code/templates completely separate from general code/templates
- Make it hard to avoid version control
- Take some advantage of standard package structure
- 5 minute install of development/testing copies on our server
- 30 minute install of development/demo on ubuntu 8.04 laptops
- 10 minute error-free updates of production sites
- (eventually) allow users to skin sites
(eventually) package our work for other people
to install under Debian/Ubuntu or at $10/month web hotels
An example advantage of standard packaging is to be able to easily run Devel::Cover
My draft plan is:
- migrate from cvs to svn
- use module-starter to create module-name-dir/
- svn move *.t and *.pm to module-name-dir/lib/ and module-
- add our webapp specific dirs into module-name-dir/
- create apache and dns config to point webdirs to file dirs
If things, work as I plan:
code can be made live by running svn update
new developers can get started with a svn checkout and a line appended to apache / bind config files
people can run on laptops with apache config changes to point to localhost
I'm imagining a directory setup like:
cgi-bin/ # web viewa
install on laptop
static/ # web viewable
t/ # test w/ html tidy , link checker, etc
While of course our t/ tests are getting better, I'm imagining hand testing at URLs like:
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
Outside of code tags, you may need to use entities for some characters:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
| & || & |
| < || < |
| > || > |
| [ || [ |
| ] || ] ||