Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re: Dev Hashbang

by scorpio17 (Canon)
on Feb 19, 2010 at 15:01 UTC ( #824170=note: print w/replies, xml ) Need Help??

in reply to Dev Hashbang

symbolic links to the rescue!

On your development machine, install your custom perl in /usr/local, then make /usr/bin/perl a symbolic link to /usr/local/bin/perl like this:

ln -s /usr/local/bin/perl /usr/bin/perl

Then you can use the same shebang on both development and production servers.

For modules, install everything into a local 'lib' directory, then use the line:

use lib '/path-to-lib/lib';

In all your scripts. Copy the lib directory to the production server, so that the scripts there will have access to the same libraries.

For anything else, try to use config files. For example, say you want "debug mode" to be active on the development server, and not active on the production server.

First create two files: dev-config.ini will contain the line:


prod-config.ini will contain the line:


Now create more symbolic links:

On the development server:

ln -s dev-config.ini config.ini

On the production server:

ln -s prod-config.ini config.ini

So your scripts only need to read "config.ini", but it's one thing on the dev side and another on the prod side. Once you read the config file, you can do things like this in your script:

if ($DEBUG) { # do debug stuff } else { # whatever }

The idea is to make each server look as much the same as possible, so that you can just tar/zip the entire app directory on the development server, ftp it to the production server, and then unzip/tar it and everything work. With a little effort up front, it's definitely possible, and it makes life much easier.

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (4)
As of 2021-09-25 02:48 GMT
Find Nodes?
    Voting Booth?

    No recent polls found