Magic Model Generator
./script/generate magic_model
What
Imagine you get offered $5,000 to write a basic website/admin application on a legacy database that has 200 interconnected tables. You’ll need to add all the associations and validations based on the existing schema.
Imagine how long that would take! 1 day? 1 week? more?
Try 1 minute.
The Magic Model Generator does all this for you automatically.
Installing
$ sudo gem install magic_model_generator
Quick demo
Create a rails application, and point it to your database.
$ rails magic_show -d [mysql|sqlite|postgresql|oracle|etc|etc] $ cd magic_show $ cp database.yml.sample database.yml and point it to your database.yml to your legacy database
In the video below I use the database created for the ActiveRecord test cases – activerecord_unittest. If you’ve never downloaded the activerecord gem, run:
$ rake build_[mysql|sqlite|postgresql|oracle|etc|etc]_databases $ rake test_[mysql|sqlite|postgresql|oracle|etc|etc]
Now install the magic_model_generator gem:
$ sudo gem install magic_model_generator
By the way, that’s all the preparation I did for the video.
Now recreate the schema.rb file and the schema_info database table via
$ rake db:migrate.
Finally, run the generator:
$ ./script/generate magic_model
Coming
Currently rails_generators cannot merge results into existing files, only skip or overwrite. I am investigating a fix for this so that you can use the MMG for iterative development.
Related articles
- Original release at RejectConf -
Similar ideas
- Generate models from XSD files by Soren Burkhart at RailsConf2007
The Magic Show at RejectConf
Dr Nic’s Blog
http://www.drnicwilliams.com – for future announcements and other stories and things.
Forum
Discussion about the Magic Multi-Connections is on the Magic Models forum:
http://groups.google.com/group/magicmodels
How to submit patches
Read the 8 steps for fixing other people’s code and for section 8b: Submit patch to Google Groups, use the Google Group above.
The trunk repository is svn://rubyforge.org/var/svn/magicmodels/magic_model_generator/trunk for anonymous access.
Licence
This code is free to use under the terms of the MIT licence.
Contact
Comments are welcome. Send an email to Dr Nic Williams.
Dr Nic, 1st June 2007
Theme extended from Paul Battley