O'Reilly logo

Professional Ruby on Rails™ by Noel Rappin

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

6.1. Plugging In to Your Legacy

For the purposes of having something concrete to wrap your head around, let's assume that Soups OnLine has secured a strategic coup: the ability to deliver information from Ingredientopedia, the world's leading online source of information about the kind of ingredients that one might use in, say, a soup. Sadly, due to the sort of contrivance that involves armies of fictional lawyers, Soups OnLine has to use the existing database as-is, and is not free to migrate the schema to something useful. So you're stuck with a database schema that looks, in part, like this (a naming convention only a database admin could love):

CREATE TABLE 'ingredientopedia'.'the_ingredient_table' (
  'ingredient_id' INTEGER AUTO_INCREMENT,
  'ingredient_name' VARCHAR(255),
  'ingredient_description' VARCHAR(4000),
  'ingredient_nutritional_info' VARCHAR(4000),
  'ingredient_category_id' INTEGER,
  PRIMARY KEY ('ingredient_id')
)
CHARACTER SET utf8;

To get Rails to open this database, you need to adjust the database.yml file to add three more database environments: one for each Rails environment. You can use the YAML merge feature to make the declaration more compact, like this:

ingredient: &ingredient
  adapter: mysql
  username: root
  password:
  socket: /tmp/mysql.sock
ingredient_development:
  database: ingredientopedia_development
  <<: *ingredient

ingredient_production:
  database: ingredientopedia_production
  <<: *ingredient

ingredient_test:
  database: ingredientopedia_test
  <<: *ingredient

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required