RamDev
RamDev is a ruby gem for boosting your work flow. It creates a ramdrive and copies your project files to it. All files are automatically synced back to the hard drive in the background as you work using rsync.
Working in ram is extremely high performance, often 'real time' for software development and testing. Be sure to use high performance settings with other tools such as make's -j option to maximize the benefit.
Installation
$ gem install ramdev
Platforms
Currently only OS X is supported.
Instructions
To start the ram disk and copy files.
$ ramdev up
By default ramdev will use half the system's ram for the ramdisk. Specify -m option to set different amount of memory to use:
$ ramdev up -m 300MB # use 300 Megabytes
or
$ ramdev up -m 2GB # use 2 Gegabytes
To shutdown the ramdisk, and restore paths.
$ ramdev down
To fix paths and links after an unexpected shutdown.
$ ramdev fix
Configuration
By default ramdev looks for a .ramdevrc file in your home directory. You can specify a different file on the command line with the -r option:
$ ramdev up -r path/to/ramdevrc
ramdevrc format
# This a yaml format file with settings for "ramdev".
# See https://github.com/JoshuaKolden/RamDev for more information.
ramdisk:
name: "NameOfDisk"
mountpoint: "/path/to/mount/point"
paths: # list of paths to copy to ramdisk, and location on ramdisk
-
source: "/path/to/source/folder"
destination: "" # no leading "/" moutpoint will be prepended
-
source: "/another/path"
destination: "different/location/under/mountpoint"The name of the lowest folder in the source path is appended to the 'destination' path which in tern is appended to the mountpoint.
###Example
ramdisk:
name: "ramdrive"
mountpoint: "/mnt"
paths: # list of paths to copy to ramdisk, and location on ramdisk
-
source: "/foo/bar/bat"
destination: "baz"$ ramdev up
Will create the following path on the ramdisk:
/mnt/baz/bat
This will have a full copy of /foo/bar/bat, so keep the size of your project (including temporary files) in mind.
/foo/bar/bat will be renamed to /foo/bar/bat_ramdev
And /foo/bar/bat will be a symbolically linked to /mnt/baz/bat
As you make changes to the ramdisk copy /mnt/baz/bat they will be automatically synced back to /foo/bar/bat_ramdev in the background.
Your project folders will effectively appear to be in the same place, but are in fact linked to ram.
$ ramdev down
When you run ramdev down the /foo/bar/bat link is removed and /foo/bar/bat_ramdev is renamed back to /foo/bar/bat; the ramdrive is then unmounted and the memory freed.
TODO
- Code cleanup.
- Support for creating new folders in the ramdisk root path.
Platforms
- Support for Unix.
Windows will have to be done by someone else, but if you do it I'll merge it.
Features
$ ramdev sync
To force sync
$ ramdev check
To check if ramdev_sync is running correctly:
License
MIT License. Copyright 2013-2014 Joshua Kolden.