On 23 Oct 2014, at 23:11, Esteban A. Maringolo <emaringolo@gmail.com> wrote:
2014-10-23 17:04 GMT-03:00 Sven Van Caekenberghe <sven@stfx.eu>:
Why do you use the pharo shell script instead of pharo-vm with --no-display? Is there any benefit other than having the pwd set to the image location? And hence, the argument script should be relative to the image.
No particular reason, mostly because I hate adding the --no-display But yes, I usually bypass the script and use the executable directly.
I don't know how Pharo resolves the file names by default.
Pharo's FileLocator seems to provide something similar to the Dolphin's FileLocator I'm used to work with (see attached image) to avoid the "resolution guessing" of relative paths when defined in the context of a script or app code (e.g. to specify template files). I should use it more. :)
Here are some things you can try: $ ./pharo Pharo.image eval "'' asFileReference pathString" '/' $ ./pharo Pharo.image eval "'foo.txt' asFileReference pathString" '/Users/sven/Tmp/pharo4/foo.txt' It seems to be image relative, unless its empty, then it becomes root, which is weird. Using absolute, resolved paths is one way to take all doubt away. There are quite a number of known locations: $ ./pharo Pharo.image eval '(FileLocator supportedOrigins collect: [ :each | each -> (FileLocator perform: each) pathString ]) asDictionary' a Dictionary(#cache->'/Users/sven/Library/Caches' #changes->'/Users/sven/Tmp/pharo4/Pharo.changes' #desktop->'/Users/sven/Desktop' #documents->'/Users/sven/Documents' #home->'/Users/sven' #image->'/Users/sven/Tmp/pharo4/Pharo.image' #imageDirectory->'/Users/sven/Tmp/pharo4' #preferences->'/Users/sven/Library/Preferences' #systemApplicationSupport->'/Library/Application Support' #systemLibrary->'/Library' #temp->'/tmp' #userApplicationSupport->'/Users/sven/Library/Application Support' #userLibrary->'/Users/sven/Library' #vmBinary->'/Users/sven/tmp/pharo4/pharo-vm/Pharo.app/Contents/MacOS/Pharo' #vmDirectory->'/Users/sven/tmp/pharo4/pharo-vm' #workingDirectory->'/Users/sven/Tmp/pharo4' )
All this sharing, talking & discussing, even over small issues and style is important, we can all learn a lot from each other and save time and money.
Absolutely.
I'd like to know the development process of others, from SCM to building, deploying and server provisioning.
I would say the standard approach is: - use Monticello with any repo type - split your code in some big modules, some private, some from public source - have a single overarching Metacello configuration - use zeroconf to build images - optionally use a CI Note that zeroconf handlers allow you to build images incrementally (the image is saved after each build), which is way faster than always starting from scratch.
After a year o Pharo development I think I'm ready to embrace a CI server (I already use scripts to build images), but I think I will move all my repositories to git before.
These are orthogonal decisions, most CI jobs on the Pharo contribution server run against StHub.
However, my remote server provisioning is still manual, and too rudimentary even for my own taste. If I could speed up this, I would deliver features faster to my customers. Now everything runs inside a two week sprint window.
I am not into provisioning myself, but more automation is always good, though sometimes setting up and maintaining all these things takes a lot of time as well.
Regards,
Esteban A. Maringolo <filelocator.png>