At work we have a rather complex setup which is prohibitive to running a full working environment locally, so we have sandboxes on remote servers that run our development code. However, as much as I love vim, it can be challenging at times to do development on a remote server full-time.
You are limited to just command-line tools or an extra step to upload when saving locally. There are a few solutions, some are use Sublime Text and the SFTP plug-in which auto-uploads on save, a few are using PhpStorm IDE which also has the ability to upload on save.
Both are fine tools, but I want a way to use tool and automatically upload any changes to the remote server. I always like to try out the latest and greatest, though the funny thing is the main editor I'm using is MacVim.
I discovered the FSEvents and Python bindings which is a Mac OS X system library that can monitor a directory for file change events. Here's a brief example of how to use.
from fsevents import Observer, Stream def event_callback(event): filename = event.name print "Filename: ", event.name def clean_exit(signal, frame): global observer, stream observer.unschedule(stream) observer.stop() observer = Observer() observer.start() stream = Stream(event_callback, "~/tmp/", file_events=True) observer.schedule(stream) # run until ctrl-c signal.signal(signal.SIGINT, clean_exit) signal.pause()
I created a full script that triggers an rsync command to copy my local file to the remote host on file change. This makes it a pretty nice way to use a file system event to trigger whatever you want.
Download from here: https://github.com/mkaz/fswatch
Also, anyone know why I can't always get a clean exit with ctrl-c using signal.pause()?