Ruby On Rails Development

THL Toolbox > Developers' Zone > Ruby on Rails Development

Ruby on Rails Development

Contributor(s): David Germano, Andres Montano.

THL relies chiefly on Ruby on Rails (RoR) for its database applications. We presently have the following RoR applications:

  • Tibetan Dictionary: programmer Robbie Bingler and Heiser Mazariegos. Status: nearing relaunch with THL general code.
  • Himalayan Dictionaries: programmer Andres Montano. Status: needs severe optimization and also some fundamental fixes.
  • Place Dictionary with GIS output: original programmers Matt Mitchell and Bess Sadler; intermediary programmer Mel Riffe; current programmers Andres Montano, Tom Benner. Status:
  • Events Dictionary: programmer Pema Geyleg. Status: currently going from planning to implementation stage. Status:
  • Media Management System-MMS: for managing images, audio-video, and references. Programmer Andres Montano. Status: launched, but really is half finished and extremely slow. Need to get an entirely new component on bibliographical reference management finished, as well as the AV component.
  • Knowledge Maps of Subjects: for building hierarchical maps, or ontologies, of areas of knowledge. Programmers Andres Montano and and Heiser Mazariegos. Status: in working order, but is poorly designed for navigation and presentation.
  • Social Networking Fathom: programmers Nick Laiacona and Heiser Mazariegos. Status: launched, but needs optimization and enhancements.

Other apps we plan for include:

  • Extension of the Place Dictionary for specialized models on Monasteries, Polities and Tourism Sites respectively
  • Biographical Encyclopedia/Database

These ROR applications (i) share extensive code/modular units with each other, (ii) have robust APIs that provide web services to each other at the editorial level, and (iii) are completely interconnected for end users.

The Integration works something like this. You are in the MMS cataloging and image and you want to specify its place - Kathmandu. You thus choose "select place" and that opens up the browsing/searching of the Place Dictionary app via a Web service API. You find "Kathmandu" by browsing or searching and hit "select". That passes the place ID for "Kathmandu" into the place field in the MMS image cataloging record. Then the label "Katmandu" is show through that ID being used to retrieve the place name from the Place Dictionary through a Web service API; in addition the label "Kathmandu" is also then hyperlinked back to its corrresponding place descriptive record in the Place Dictionary. An additional aspect of this is that then in the Place Dictionary you will be able to see how many images have been cataloged by any given place, since the Place Dictionary will every night do a regularly scheduled query of the MMS to see what images have been cataloged by what places, and retrieve the corresponding MMS image IDs. The reason it is done every night rather than dynamically is simply speed issues.

Likewise, the Knowledge Map is used to maintain hierarchical typologies that are then jointly used as controlled vocabulary via Web service APIs for all these other applications. For example, it has a "grammar tree" which is used by the Tibetan Rich Dictionary to specify what grammar function a term is. In the same way as outlined above, the word "noun" (or whatever) in the Tibetan Rich Dictionary for a given term will then be hyperlinked to the corresponding place where "noun" occurs in the Knowledge Map for grammar functions. Likewise, from the Knowledge Map for grammar functions you will be able to see how many dictonary terms have been indexed by each grammar function. Thus the Knowledge Maps and Place Dictionary in particular become rich indexes where you can look up a topic or a place, and see all the resources in THL available for it - images, audio-video, essays, texts, maps, etc.

General THL RoR Development Resources:

Provided for unrestricted use by the external link: Tibetan and Himalayan Library