Creando un Blogazine
con Ruby on Rails

Sí, sí, este que estás leyendo

imagen-cabecera

Qué es un Blogazine

Un Blogazine es un medio para publicar artículos personales en Internet, sólo que el diseño y formato de los mismos es mucho más elaborado y más semejante al que ofrecería una publicación impresa.

Este palabro está creado a partir de la fusión de otras dos más conocidas: Blog (el de toda la vida) y Magazine (en español revista).

Desde el punto de vista del programador o el diseñador además es un modelo interesante para hacer experimentos y al mismo tiempo publicarlos.

Mi Solución

Como es de suponer, existen infinidad de soluciones aplicables al problema, tal vez tantas como desarrolladores y tal vez a la hora de la verdad puede que cada uno sólo se sienta cómodo con la suya. En cualquier caso ver cómo otro ha hecho su solución siempre puede ayudar a desarrollar la propia. Sin más dilación, aquí presento Mi Solución:

Todo el programa está desarrollado utilizando el framework de Ruby on Rails como base y también está inspirado en la ya vieja CSS Zen Garden y en el famoso ejemplo Programar un Blog en 15 minutos, aunque claro, adaptado a Rails 3.

Los principales problemas a solucionar fueron dos, crear una estructura suficientemente flexible como para no presentar practicamente ninguna restricción a la creatividad y crear un tipo de post tan fácil de publicar como el clásico pero capaz de aprovechar dicha flexibilidad.

Una Estructura Flexible

Una estructura suficientemente sería aquella que permitiese mostrar nuestro sitio en formatos tan diferentes como los que aparecen en los siguientes ejemplos sin necesidad de adaptar el código compartido de la aplicación cada vez que escribamos un nuevo artículo.

ejemplo ejemplo ejemplo ejemplo

Diferentes diseños posibles en este blogazine

La clave: evitar elementos innecesarios. Sólo hay un encabezado, un área para el contenido y un pie. El encabezado y el pie son internamente muy sencillos de modo que sea fácil cambiar el aspecto para que cuadre con el diseño general del post.

Para definir el estilo general básico y facilitar el desarrollo, toda la estructura está englobada en un framework de CSS, The Square Grid, este es el que añade los divs wrapper y container que además de dar estructura básica, resultan muy útiles para personalizar el estilo. Puede utilizarse cualquiera, elegí este porque a mí me resultaba cómodo y con una cantidad de espacio muy correcta. Ya sé que no resulta muy semántico, pero de otro modo escribir artículos sería un infierno

El CSS que se añade en cada post tiene la capacidad de anular el definido en el estilo general, pero eso no nos permite cambiar el ancho de los tres elementos principales, para hacer posible que encabezado, área de contenido y pie puedan ocupar todo el ancho de pantalla o una fracción distinta a la habitual es necesario incluir innerheader e innerfooter a encabezado y pie respectivamente.

Wrapper
Container
Header
Inner Header
Post
sg
sg
sg
sg
sg
sg
sg
Footer
Inner Footer

Elementos descritos en los tres párrafos:

Básico Square Grid Extras

La Diferencia con el Blog Clásico

Un blog de estilo clásico está formado (en su mínimo aceptable, claro) por un título y un cuerpo, ¿cambia esto en este Blogazine? No, aunque sí que se añaden dos nuevos elementos: un apartado para CSS y otro para Javascript.

El código insertado aparecera al final del head de la pagina permitiendo así anular (override) las propiedades y funciones de los CSS y Javascripts básicos de la página.

El texto introducido puede ser tanto código interno como referencias a otras hojas de estilo y librerías.

A pesar de que esta parte del artículo es tan corta, las horas sopesando alternativas, pros y contras fueron mucho mayores a las dedicadas a la creación de la estructura. Si quieres saber más, pregunta ;-)

Recursos Externos Utilizados

The Square Grid

Framework CSS. Utilizado para crear rápidamente la estructura básica de cada artículo.

Kaminari

Permite crear sistemas de paginación. Utilizado para paginar los distintos índices de artículos.

Paperclip

Gestión de ficheros e imágenes. Utilizado para las imágenes de los índices de artículos.

Nifty Generators

Una colección de generadores de Ruby on Rails. Utilizado para crear el sistema de login.