Herramienta “Páginas amarillas” Manual de Desarrollo

Anuncio
Herramienta
“Páginas amarillas”
Manual de Desarrollo
Mayo 2013
Herramienta “Páginas amarillas” - Manual de Desarrollo
Índice
1.Introducción.................................................................................................................................... 3
2.Recomendaciones para el desarrollo......................................................................................... 4
3.URLs de acceso............................................................................................................................... 4
4.Estructura de directorios de la aplicación.................................................................................5
5.Versiones de gemas Ruby............................................................................................................. 7
6.Base de datos................................................................................................................................. 8
6.1.Modelo entidad-relación...................................................................................................... 8
7.Creación de tablas......................................................................................................................... 9
8.Creación de índices...................................................................................................................... 12
2
Herramienta “Páginas amarillas” - Manual de Desarrollo
1. Introducción
El presente documento recoge el manual de Desarrollo y Administración de la herramienta
“Páginas amarillas” de Sartu.
Páginas amarillas es una aplicación web, y para el desarrollo de la misma se ha elegido el
framework web Ruby on Rails (abreviado como RoR o Rails), basado en Ruby, un lenguaje
orientado a objetos, interpretado, y especialmente diseñado bajo el principio de “Least
Surprise”.
Algunas características de RoR son:
•
Ajax: Prototype, script.aculo.us, jQuery.
•
Arquitectura MVC (Modelo-Vista-Controlador) y ORM (Mapeo relacional de Objetos):
mediante ActiveRecord y Action Pack.
•
Soporte de internacionalización i10 y i18.
•
Módulos de seguridad, base de datos, plantillas y validación de formularios.
Como software de servidor web, se ha seleccionado Apache con Phusion Passenger. Apache
es el referente mundial de servidores web, al que se le añaden los módulos para Ruby y Rack,
ambos empaquetados en el módulo libapache2-mod-passenger. Otras combinaciones
posibles hubieran sido ej. Nginx con WEBrik (servidor por defecto de RoR) o Mongrel
(superior al anterior). Las distintas posibilidades darán resultados diferentes de rendimiento o
velocidad, y de consumo de recursos (memoria RAM).
Rack es un middleware para encapsular de forma muy sencilla peticiones y respuestas http
desde ruby, unificando así los detalles de servidores y frameworks web diferentes.
Como base de datos se ha elegido SQLite, aunque de forma semejante al bloque de servidor
3
Herramienta “Páginas amarillas” - Manual de Desarrollo
web, es posible usar otros servidores web y otras BBDD (ej. PostgreSQL).
2. Recomendaciones para el desarrollo
•
Emplear entornos de desarrollo, de pruebas y de producción. Para ello, la
configuración
a
realizar
es
la
correspondiente
a
ambos
en
el
fichero
config/database.yml, haciéndose la carga de datos respectiva mediante:
# export RAILS_ENV=development
# rake db:seed
•
Emplear máquinas virtuales para demostraciones. Ej. VirtualBox.
•
Para indentación del código fuente emplear dos espacios en lugar de tabulador.
3. URLs de acceso
Las URLs o rutas del sistema son de la forma:
/seccion/controlador/accion/id
Para cada sección se muestran una serie de controladores y unas acciones de ese controlador
determinadas.
4
Herramienta “Páginas amarillas” - Manual de Desarrollo
4. Estructura de directorios de la aplicación
Denominando DIRBASE al directorio en el que se instala la aplicación, se tiene la siguiente
estructura (se indican todos los directorios de primer nivel y los subdirectorios más
significativos):
DIRBASE
|--- app
|--- controllers
|--- helpers
|--- models
|--- views
|--- config
|--- db
|--- doc
|--- files
|--- lib
|--- log
|--- public
|--- images
|--- javascripts
|--- stylesheets
|--- script
|--- test
|--- tmp
|--- vendor
Salvo en lo referente a la carpeta files, esta estructura de directorios es la estándar en todo
proyecto Ruby on Rails.
La información contenida en cada directorio es la siguiente:
•
apps: código de la aplicación, con subdirectorio para MVC y helpers (ficheros
auxiliares para dejar código en las vistas, que no se puede dejar en en el modelo o el
controlador, y que se separa de la vista para no dificultar la lectura del lenguaje
markup en ésta).
•
cfg: configuración de la conexión a la base de datos, al servidor SMTP, localizaciones
para internacionalización.
•
db: esquema de la base de datos, comandos de creación de la misma, y datos de
5
Herramienta “Páginas amarillas” - Manual de Desarrollo
carga inicial.
•
lib: ficheros de tareas para Rake (en formato .rake).
•
log: logs o trazas.
•
public: ficheros web: html, imágenes (gif, png, jpg), css, javascript (.js).
•
script: utilidades varias.
•
tmp: información temporal como caché, PIDs, sesiones y sockets. También se
almacena aquí el backup de base de datos.
•
vendor: gemas y plugins de terceros adicionales.
Por otra parte, files es el directorio para dejar archivos varios, ej. backups de ficheros e
informes.
6
Herramienta “Páginas amarillas” - Manual de Desarrollo
5. Versiones de gemas Ruby
Aunque en el manual de instalación se indican los pasos para instalarlas, se muestra aquí el
listado con las versiones:
•
gem 'rails', '3.2.13'
•
gem 'sqlite3'
•
gem 'sass-rails', '~> 3.2.3'
•
gem 'coffee-rails', '~> 3.2.1'
•
gem 'therubyracer', :platforms => :ruby
•
gem 'compass-rails'
•
gem 'zurb-foundation', '~> 3.2.5'
•
gem 'uglifier', '>= 1.0.3'
•
gem 'select2-rails', '~> 3.3.1'
•
gem 'jquery-rails'
•
gem 'bcrypt-ruby', '~> 3.0.1'
•
gem 'rails-i18n', '~> 0.7.2'
•
gem 'will_paginate', '~> 3.0.4'
•
gem 'strong_parameters', '~> 0.2.0'
•
gem 'simple_form', '~> 2.1.0'
7
Herramienta “Páginas amarillas” - Manual de Desarrollo
6. Base de datos
6.1. Modelo entidad-relación
Herramienta “Páginas amarillas” - Manual de Desarrollo
7. Creación de tablas
CREATE TABLE "activities" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"name" varchar(255) NOT NULL,
"created_at" datetime NOT NULL,
"updated_at" datetime NOT NULL
);
CREATE TABLE "activities_instruments" (
"activity_id" integer NOT NULL,
"instrument_id" integer NOT NULL
);
CREATE TABLE "countries" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"name" varchar(255) NOT NULL,
"created_at" datetime NOT NULL,
"updated_at" datetime NOT NULL
);
CREATE TABLE "countries_instruments" (
"country_id" integer NOT NULL,
"instrument_id" integer NOT NULL
);
9
Herramienta “Páginas amarillas” - Manual de Desarrollo
CREATE TABLE "funders" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"name" varchar(255) NOT NULL,
"created_at" datetime NOT NULL,
"updated_at" datetime NOT NULL
);
CREATE TABLE "funders_instruments" (
"funder_id" integer NOT NULL,
"instrument_id" integer NOT NULL
);
CREATE TABLE "instrument_types" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"name" varchar(255) NOT NULL,
"created_at" datetime NOT NULL,
"updated_at" datetime NOT NULL
);
CREATE TABLE "instruments" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"name" varchar(255) NOT NULL,
"instrument_type_id" integer,
"created_at" datetime NOT NULL,
"updated_at" datetime NOT NULL
);
CREATE TABLE "instruments_users" (
"instrument_id" integer NOT NULL,
"user_id" integer NOT NULL
10
Herramienta “Páginas amarillas” - Manual de Desarrollo
);
CREATE TABLE "reports" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"year" integer NOT NULL,
"week" integer NOT NULL,
"hours" decimal(6,1) NOT NULL,
"user_id" integer,
"instrument_id" integer,
"activity_id" integer,
"created_at" datetime NOT NULL,
"updated_at" datetime NOT NULL
);
CREATE TABLE "schema_migrations" (
"version" varchar(255) NOT NULL
);
CREATE TABLE "users" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"username" varchar(255) NOT NULL,
"password_digest" varchar(255) NOT NULL,
"email" varchar(255),
"active" boolean DEFAULT 't',
"admin" boolean DEFAULT 'f',
"password_reset_token" varchar(255),
"password_reset_sent_at" datetime,
"created_at" datetime NOT NULL,
"updated_at" datetime NOT NULL
);
11
Herramienta “Páginas amarillas” - Manual de Desarrollo
8. Creación de índices
CREATE INDEX
"index_activities_instruments_on_activity_id_and_instrument_id"
ON "activities_instruments" (
"activity_id"
"instrument_id"
);
CREATE INDEX
"index_countries_instruments_on_country_id_and_instrument_id"
"countries_instruments" (
ON
"country_id"
"instrument_id"
);
CREATE INDEX
"index_funders_instruments_on_funder_id_and_instrument_id"
"funders_instruments" (
ON
"funder_id"
"instrument_id"
);
CREATE
INDEX
"instruments" (
"index_instruments_on_instrument_type_id"
ON
"instrument_type_id"
);
12
Herramienta “Páginas amarillas” - Manual de Desarrollo
CREATE INDEX
"index_instruments_users_on_instrument_id_and_user_id"
"instruments_users" (
ON
"instrument_id"
"user_id"
);
CREATE INDEX "index_reports_on_activity_id" ON "reports" (
"activity_id"
);
CREATE INDEX "index_reports_on_instrument_id" ON "reports" (
"instrument_id"
);
CREATE INDEX "index_reports_on_user_id" ON "reports" (
"user_id"
);
CREATE UNIQUE INDEX "index_users_on_username" ON "users" (
"username"
);
CREATE
UNIQUE
"schema_migrations" (
INDEX
"unique_schema_migrations"
ON
"version"
);
13
Descargar