3 ms·
My preference is still a *nix virtual instance running locally (or on a LAN server/my desktop) so that I can keep even better control over environment, keep dis
by dotBen 15y ago
My preference is still a *nix virtual instance running locally (or on a LAN server/my desktop) so that I can keep even better control over environment, keep discrete projects separate and clone dev environments quickly to peers.
VMWare Fusion works out great for this, but FOSS VirtualBox works out too if you want the free route.
The rest of the 37 Signals advice is sound, just do it within the virtual instance.
- psadauskas 15y agoI agree, but I would like to point out that if you use Virtualbox, you can script the whole setup of the VM with vagrant. The only downside I have with using VMs is that it's hard to use some of the nice OSX GUI tools ( GitX, Pixelmator) on the files in the VM.
- joelhaasnoot 15y agoOne thing that works well for that is using shared folders on the VM. I have a folder 'projects' on my windows drive that is a shared folder on all my VMs. It's mounted with fstab on boot, and works like a charm mostly. I say mostly because the last few Linux kernels/VirtualBox extensions/VirtualBox releases haven't been playing nice, where the VM filesystem is "out of sync" with the host filesystem, especially when creating and deleting files (updating is fine). Haven't played with vagrant, but it sounds great.
- ubercore 15y agoVagrant should auto-mount the directory containing the Vagrantfile as /vagrant in your guest OS. I normally add my Vagrantfile directly to my git repository, checkout the git repository on my OS X machine, and edit the files directly on the OS X filesystem (and use Github's OS X client). The files will still be available in your vagrant machine, and if you really want to you can automate a symlink from /vagrant to /home/vagrant, or wherever you want.
- technomancy 15y agoThis is slick, but be warned that you do pay a performance penalty for it last I checked. So keep your main work on the totally virtualized filesystem and just use /vagrant for stuff you need to share.
- ubercore 15y agoInteresting. Well, I don't normally have to push any large files around, mostly python source code, so it's worked well for me. Will keep an eye out.
- veidr 15y agoActually, I find using VMWare Fusion to be a great way to use all the good dev tools available on the Mac -- SourceTree git client, CSSEdit, BBEdit, etc -- while actually developing on the same Linux environment you'll use in production. The key is to build and install the latest version of Netatalk on the Linux VM, and then mount its filesystem on the Mac via AFP. Netatalk has a config option (-admingroup) that lets members of an arbitrary group mount a volume with root privileges, which is very handy for development. (Netatalk has plenty of bugs[1], but works well enough for development.) I've tried to get this same setup with CIFS (Samba), as well as sshfs. However, apps like TextMate or CSSEdit freak out with permission errors (even if you set up ACLs or something so that you really have write permission, the Mac apps don't believe you do). Netatalk is the only magic sauce I have found that lets you mount a Linux server's disks as volumes that your Mac sees as simple writable volumes, but where you actually have root privs as far as the Linux box is concerned. Not something I'd use on a real server, but great for development. -- [1]: the most insanely annoying one being that it currently can't serve the root volume; you have to configure it to make /etc, /var, etc available as separate shares
- ajtaylor 15y agoAt my last job, I was successfully using NFS to share a directory from OS X to a FreeBSD VM running under Parallels. I went that way so that TimeMachine could backup the shared directory (which contained source code). It seems like it would still work if you did the reverse procedure and made sure the directory on OS X was backed up via Time Machine, but I'd love to hear of your experience.
- pyrhho 15y agoMacFusion works pretty well for mounting the vm file system in OSX.