There isn't any real 'right' way to do it, but there are lots of 'standards' and 'guidelines' that can be implemented. The trick is coming up with ones that the team members will use.
If at all possible, everything should be planned out and agreed upon before any code is written.
Changes to the agreed upon variables, code etc. should be communicated with team members via an approved medium (email, Jira updates, whatever works for your group).
If you have a project manager or resource manager, sometimes their duties may be able to help reinforce whatever 'standards' your group decides to enact.
If your group writes their applications as. . well, applications (using CFCs), then you can scope your variables for just the CFC's in question. That doesn't solve all of the problems or issues, but it can certainly help.
Some of the MVC methodologies can help as well, since they help to reinforce your teams coding practices by their very nature. There are a number of them that are out there that are rather solid. FuseBox, ColdBox, Model Glue etc.
In addition to having a development environment on my laptop and my desktop, we have a staging server and a production server. Furthermore, we have one or more developers and contributors who may have one or more development environments of their own.
Each of these environments may have their own copy of ColdFusion (developer, standard, enterprise - whatever is needed) and their own copy of SQL Server / Express / whatever, their own data source name, data user name, data password, names for CF Mappings, and so forth. So, while the SQL tables and directory structure of the code is all the same, there are many things different from one to the next.
Certainly, we need to have a large number of variables so when someone uploads via SVN commit they don't screw everyone else up because they shove their own local names into place.
Use configuation/change management to keep track.
Best Method For Server Variables in Multi-Developer / Multi-Server environment?
How do YOU handle that? XML file? CFC? some form of .INI file? Looking for a solid way to handle this for a myriad of developers and environments
I would use a configuration management database. You could configure every application, server, environment to automatically update the database with its own data.
Thank you for the response.
We considered a databased-solution, but if we keep all of the variables in a database and our datasource in CF contains the user/psw, then it's increasingly easy for any hacker to reach into our bag of jewels. If you don't store the user/psw in CF, then all of your developers have easy access to the db user/psw and that's not easy to change when each one leaves.
One of the most compelling solutions we have found is http://code.google.com/p/configcfc/ By using an XML file and designating it as do-not-upload in the svn local files for each developer, each developer can maintain their own list of variables with the values customized to their environment, and when they push updates they don't have to worry about flipping switches or making changes to what the source or destination location is. Furthermore, being an XML that actually ends with ".cfm" means that it cannot be read by the typical hacker.
BTW, for anyone who hasn't discovered SVN in conjunction with Dreamweaver when working in a multi-programmer environment, man, you're missing out. The one place that Adobe needs to finish this, though, is the final step -- migration from your staging server to production. Anyone with clues on that will earn my undying gratitude (for whatever that's worth!).
So, in a multi-programmer, multi-stage environment, we need to handle these things:
1. Variables for mappings, datasources, etc.
2. Migration to staging and collaborative tools.
3. Migration to production.
4. Detecting and applying database changes.
If Adobe were to make these processes solid in DreamWeaver, well, who knows what market share they would add? I would be trumpeting them at every turn!