You have to build an product which consist out a couple of components and probably more than one system. Even your development environment needs more than one system to work properly. To write efficiently code under such hard circumstances is really hard.
And there are a some other facts which makes your coding-live much more unfunctional like a not working VPN or bad internet connection while traveling in the train.
I’ve found an way which works quite well for me.
I’m using my notebook with eclipse and Parallels Virtualisation. On my Notebook i have all the databases running (MySQL and CouchDB). I’m coding directly in eclipse and all changes are transfered automatically to all running virtual machines on my laptop. For that i’ve configured the rsync daemon on my osx:
[SomeName] comment = public archive path = /Users/tspycher/Documents/Projects/xyz read only = yes list = yes uid = tspycher gid = staff hosts allow = 10.211.0.0/16
the “hosts allow” settings makes sure, that only the local vm’s can access this rsync module. After creating the config file you just have to start the rsync daemon by invoking
. To make the whole system more secure you could bind the rsync daemon to the virtualisation network device.
On the remote systems i’ve created an service script which periodically transfers all changes to the local system. Here the script for ubuntu upstart:
script while [ 1 ]; do rsync --exclude '.svn' --delete -avz email@example.com::SomeName/service /opt/xyz && sleep 5; done end script
After starting the little dirty service with
servcie devsync start
the systems are in sync. And finally i just create sym links the needed files and folders from its synced location to the correct location.
This Setup allows me to code very efficiently on more than one system.