MagLev is a Ruby implementation built on top of a mature VM which offers native object persistence. Working with these live objects is awesome - but this image-based development is very different than traditional file-based development. MagLev uses both which has broad reaching effects - from design to deployment.
In traditional applications, data and code are separate. Deployments involve pulling new code, updating or migrating the data-store, and restarting or reloading the application which creates a new runtime with this new code.
MagLev's transient objects behave in this same manner, but committed objects are always there. Migrating these live, persistent objects is quite different. Your ‘data’ migrations involve things like instance variables, method definitions and class hierarchies, rather than creating tables or updating column definitions.
In this talk we will walk through how to:
- Set up a workstation for MagLev development
- Develop a basic application using MagLev
- Provision a Vagrant server with MagLev
- Deploy the application to the Vagrant server
- Modify the application - which requires a data migration
- Deploy the new code
- Migrate existing objects