Today I started working on an application to demonstrate “Cloud Scale” concepts. I had planned to do this using the PetShop application; unfortunately, the 1995 era PetShop Rails migration would take more repair work then a complete rewrite (HTML tables, no CSS, bad forms, no migrations, poor session architecture).
If I’m considering a fresh start, I’d rather do it with one of my non-PetShop pet projects called “WhatTheBus.” The concept combines inbound live data feeds and geo mapping with a hyper-scale use target. The use case is to allow parents to see when their kids’ bus is running late using the phone from the bus stop.
I’m putting the code in git://github.com/ravolt/WhatTheBus.git and tracking my updates on this bog.
My first sprint is to build the shell for this application. That includes:
- the shell RAILS application
- Cucumber for testing
- Simple test that sets the location of a bus (using a GET, sorry) in the cache and checks that it can retrieve that update.
This sprint does not include a map or any database. I’ll post more as we build out this app.
Note: http://WhatTheBus.com is a working name for this project because it appeals to m warped sense of humor. It will likely appear under the sanitary ShowBus moniker: http://showb.us.
As part of a Cloud computing project, I’ve taken on updating the Rails port of the JPetShop project to Rails 2.0 and have the project on SourceForge. This port dates back to 2005 so many of the latest conventions (e.g. CSS) were not in vogue.
My ultimate objective is to show scale out techniques on a very simple base app. Before we can get there, I’ve got some clean-up work to do. I’d also like to add a test framework (Cucumber?). I’ll document the progress through this exercise here.
My first check-in provided the base level of function. Currently, none the forms are working but the catalog is visible.
Today’s update was to fix the login page:
- Change the view to use the form_tag helper. This let us put protect_from_forgery into the code base again!
- Remove the extra login form (not sure why that was there)
- Clean-up all the references to use symbols (:field) instead of strings (‘field’)
- Change the controller to handle both the initial request (GET) and form processing (POST)
- Update the layout and other pages to direct users to the correct login page
I’ve been resisting:
- removing the tables in favor of definition lists (DL)
- add CSS
- changing the session to store an ID instead of the full account object