[thelist] CF: Determining which DB used.

Raymond Camden jedimaster at macromedia.com
Wed Sep 12 09:33:56 CDT 2001

> you might be able to query information from the server or cgi 
> scopes about the machine the code is running on and run 
> different queries based on this information.  try looking at 
> server.OS.name, server.OS.version, and cgi.server_software.  
> btw, anybody know why server and variables scopes aren't structures?

Security reasons. That's the official reason. Well, for Server.
Personally, I don't agree that it's a good idea, but, what do you do. If
you want to use the Server scope for your app, I suggest doing
Server.App instead of just Server, that way you can examine the
structure w/ StructKeyList, etc.

> my suggestion would be to create those global variables you 
> mention -- one for datasource, one for dbtype, and maybe 
> another for dbserver.  then, whenever you run a query, check 
> the dbserver variable and run a query designed for the 
> currently connected database.

This is a good idea, especially if you plan on going back and forth, and
again, if you keep your queries in custom tags, it gets even easier.

> something else to keep in mind -- always use a global 
> variable for your local file path root.  windows uses a drive 
> as the ultimate root while unix uses a slash.  being able to 
> change this in one location is crucial to portability.  you 
> might also want to do this for your relative mappings as 
> well, if you use them, since you might not be able to setup 
> the same mapping in the new location.

A personal suggestion for this: 

I've done the same type thing you describe above, but I find that it
runs into problems when you update your server. Imagine this. At your
dev server, you have set the web root to d:\web. Your live server uses
e:\web. Before uploading, you 'fix' the var, upload, then correct it
back on your home system. Obviously, not a good idea.

So, first, look for ways around it. You can, for example, use
ExpandPath(".") to get the current directory you are in. 

Another option: You can separate your vars and system level stuff into
two files. So, file one has a set of variables that always apply. Ie,
Application.BGCOLOR = "green". File 2 has stuff like Application.Root =
"c:\web". So, when you deploy from Dev to Live, you can upload
everything but file 2. I've also used .ini files to store this kind of

Just random ideas.

Raymond Camden, Principal Spectra Compliance Engineer for Macromedia

Email    : jedimaster at macromedia.com
Yahoo IM : morpheus

"My ally is the Force, and a powerful ally it is." - Yoda 

More information about the thelist mailing list