[Glass] Basic questions regarding GemBuilder for Smalltalk, GemTools, and tODE
Norbert Hartl
norbert at hartl.name
Wed Oct 2 03:16:11 PDT 2013
Am 02.10.2013 um 00:33 schrieb Dale K. Henrichs <dale.henrichs at gemtalksystems.com>:
> I encourage Otto (and others ... hint, hint) to share more about their processes and procedures ...
I agree with everything Otto said. I managed it at least the last 6 months to develop in pharo only and deploy on gemstone. It is easy in my case because I took some not too fine ways in code just to avoid having gemstone specific packages. For this I would need to tweak some of my workflows.
Working that way is made easy by things like Grease. But on the other hand you learn really quick what are the differences between pharo and gemstone. For all of these there is a way of programming that runs on both platforms.
So, I work on my pharo image and commit code to my repository. On a remote server I have an installation of jenkins continuous integration server. Whenever I commit, jenkins runs a build for pharo _and_ gemstone for the same code. Most of the time I discover problems when jenkins runs the test and pharo stays green while gemstone turns red. If everything looks green I update my development server with the new code.
Updating the development server: The production server does a backup every night. I have a script [1] that copies the backup from the production server and recreates the image on the development server. On top of that I load the newest version from metacello. This is a very essential step. With bootstrapping the test server in the same state as the production server you test exactly what will happen later when you update the production server.
For testing gemstone in more detail I can do two things: I can download the last prepared image from jenkins into my local gemstone. Or I download the last backup of my production server and recreate the image on my laptop.
Finally I can connect to my development and production server with gemtools or topaz. But this happens rarely just like Otto said. Whenever an entry is added to the object log I get an email. Then I use gemtools to connect to the image and open a debugger on the problem and fix it. Apart from that it is mostly topaz usage because gemtools is too slow for me. And for updating tasks you are better off with topaz in combination with a tool like screen [2] anyway. That's because if the internet connection breaks while you are updating everything is rolled back.
Norbert
[1] the script the recreates an image from backup
#!/bin/bash
. ./env
echo copying backup from 2d-concierge
scp 2d-concierge:/opt/application/concierge/backup/backup.dbf.gz .
echo unpacking backup
gunzip backup.dbf.gz
echo stopping concierge
./concierge stop > /dev/null
echo cleaning data dir
rm data/extent0.dbf
rm data/tranlog*
echo copy fresh extent
copydbf /opt/gemstone/product/bin/extent0.dbf data/extent0.dbf
chown -R gemstone data
echo starting stone in restore mode
startstone -R concierge
echo restoring backup
cat scripts/restore-backup.st | topaz -l -T200000
echo commiting restore
cat scripts/commit-restore.st | topaz -l -T200000
echo stoping stone
stopstone concierge DataCurator swordfish
echo restaring stone in normal mode
./concierge start
[2] http://www.gnu.org/software/screen/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20131002/4e66ae4f/attachment.html>
More information about the Glass
mailing list