Personal Media Library

Personal Media Library (PML) is a Ruby on Rails end-user office/organization application that provides the ability for you to catalog your DVDs, CDs, and Books, all in one database with a Web interface.

Philosophy: The PML should be very easy to navigate, every object related to another, will have a direct link on the screen. Parent and child objects should be displayed when possible, and search results should indicate where the match was found.

DVD support includes the ability to add many chapters to a title, i.e. for Home Videos.

CD support includes ability to quickly add a CD Title, with Artist, and all Tracks using the FreeDB (Free Database CD ROM) lookup service by simply inserting a CD.


Book support includes ability to quickly add your books using the Amazon Web Service ISBN lookup service to add Title , Author(s), Pages, Description, Edition and Date Published.

The application and code is freely available via Ruby Forge.



Personal Media Library - unixname::persmedialib


Ruby (

Rails (

A Database (you will need one)

- MySQL (

- Others, see

"For database, you can use MySQL, PostgreSQL, SQLite, Oracle, SQL Server, DB2, or Firebird"

Developed using:

Ruby: ruby 1.8.4 (2005-12-24) [x86_64-linux]

Rails: Rails 1.1.6

MySQL: MySQL 4.1.10a-Max

Eclipse: Version: 3.1.0, Build id: I20050627-1435 with Plug-ins:

- Radrails 0.7

- Ruby Development Tools (0.8)

- Subclipse 1.0.3

- Smart Development Environment 1.0.1

Linux: Linux S1G #1 Mon Jul 17 09:21:59 UTC 2006 x86_64 x86_64 x86_64 GNU/Linux

Existing users -- You MUST Update your database with

> rake migrate

New users -- New Installation:

1. extract and put into a directory where your RAILS projects reside

2. create the database tables using one of the following options (a or b):

2a. Using rake db_schema_import:

- using your favorite database client, create the target data base only, i.e. "mymedia" - NO tables ()

- edit the database.yml, i.e. since development is default, change to read as,

adapter: mysql
database: mymedia
host: localhost
username: root
port: 3306

# Windows example above, MySQL is normally(?) run without a password

- cd to home directory for persmedialib (per step 1 above)

- execute:

> rake db_schema_import

- the tables are now created (see #3 below to 'Properly seed' MusicCategories)

2b. Using the /db/development_structure.sql

- create the database

- create the tables using the /db/development_structure.sql

(this MAY need to be edited/adapted to ceratin databases, and is generated from MySQL today)

3. CDs: populate the the table “musiccategories” before loading CDs from FREEDB using EITHER:

3.a load musiccategories.sql (/db/musiccategories.sql) OR

3.b manually adding these lookup values:

3.c You may need to adjust the cdrom device in the '/config/application.yml' configuration file:

# Linux example

cddrive: /dev/cdrom

#Windows ??? (needs verified by someone else, I don't do Windows)

cddrive: d:\

4. BOOKS: If using the Amazon Web Service (AWS) to populate book data, register for your key (see link below)

and enter it into the '/config/application.yml' configuration file:

awsid: 'ZZZ' (replace ZZZ with your key, 20 character length)

Registration link:

4.a Book Categories are USER defined and support a 'tree/hierarchy' notion. You can create your hierarchy of categories. (See screenshots for a sample,|graphic )

5. Videos: Lookup values are USER defined for Ratings, Media Types, and Categories.

These are samples from my library.

Sample Ratings:

General Audiences
Parental Guidance
Parental Guidance; for over 13 years old

Sample Media Types:




Digital Versatile Disk, normally DVD-Video format


Super VHS video tape


Super VHS Compact


VHS video tape


VHS Compact

Sample Video Categories:




Lots of action, chase scenes, etc.


Animations, fun-filled videos


Smile, funny movies that make you laugh


data discs


Pure fantasy and magic

Home Video

Family movies, homemade


Love stories, etc.

Science Fiction

Science Fiction, and someday fact?

5. Starting

- cd to home directory for persmedialib (per step 1 above)

- execute:

> ruby server/script

- open web browser, enter URL:


Using: - enjoy! Quickly build up your Library!


1 Support:

Submit Support requests via RubyForge (Support Requests for persmedialib) or email to

2 Feature Requests:

Submit Feature Requests or email to

3 Bugs:

Submit Bug Reports or email to


1. See Project Home Page at