14
desarrollado en Chile: “Artenlinea.com”
3 Comentarios | Post por rodrigo.orrego en desarrollado en chile, rails, ruby
Continuando con los posts de aplicaciones Rails desarrolladas en Chile conversamos con Miguel Michelson (@michelson) desarrollador y cabeza del proyecto “Artenlinea.com”.
![]()
@chileonrails: ¿Qué es Artenlinea?
@michelson: Artenlinea un servicio de portafolios online para artistas visuales en internet.
@chileonrails: ¿Cómo nace el proyecto?
@michelson: El proyecto nace a partir de una inquietud que tenia en la universidad, en ese entonces estaba en “negociaciones” para vender un sistema web para los alumnos de arte de la U. Finnis Terrae, pero hubo demasiadas trabas y nunca resultó, por lo que decidí hacerlo yo , en ese entonces estaba terminando un diplomado de desarrollo de aplicaciones dinámicas en tci.cl, donde teníamos que hacer un proyecto final, ahí aproveché de desarrollar el primer prototipo en PHP (a pata) con mi compañero Pato Díaz , a quien se le ocurrió el nombre “artenlinea” nombre que usa hasta hoy.
@chileonrails: ¿Cuanto tiempo lleva funcionando el proyecto?¿Cual ha sido la evolución del proyecto durante este tiempo?
@michelson: El sitio existe desde diciembre del 2005, desde ahí ha tenido n cambios, ha pasado por 3 versiones en php, en cuanto a cambios de diseño y funcionalidades hasta que me aburrí de PHP, o mejor dicho, me aburrí de mantener el PHP que había programado, era un espaguetti muy difícil de mantener; tenía todas las malas practicas que te puedas imaginar, Artenlinea ha sido mi campo de experimentación en términos de desarrollo por lo que traía a cuestas muchos de esos “condoros” de diseño propios de la inexperiencia.
Para el 2008 me junté con Rodrigo Orrego de Metrik para que me ayudara a pasar todo el sitio a Rails y desarrollar algunas funcionalidades extras, yo algo sabía de Rails pero no estaba en condiciones de hacerlo solo, ahí aprendí muchísimo de Ruby y Rails, y en adelante he seguido perfeccionando los servicios, agregando funcionalidades nuevas y un largo etc..
@chileonrails: ¿Cuáles son las principales funcionalidades del sistema?
@michelson: Artenlinea tiene 3 funcionalidades principales;
La primera es el servicio de portafolios que permite al artista subir un numero ilimitado de imágenes, organizándolas en series de obras, también pueden mantener un blog, vincular videos desde distintas fuentes, como vimeo, youtube, metacafe etc.. entre otras cosas propias de un blog como comentarios, contactos, etc.
La segunda es un mercado de obras , donde el artista define que obras son las que quiere vender para que queden disponibles en su tienda desde donde pueden ser adquiridas en línea por medio de PayPal.
La tercera pata es un sistema de proyectos muy simple, orientado a Agentes culturales, Galeristas o personas ligadas a la gestión en general con artistas, el cual permite , en términos generales, desde el desarrollo de proyectos de diseño curatorial a la organización de grupos de artistas visuales en relación a un proyecto, este servicio permite la mensajeria privada , versionamiento de textos y selección de obras.
@chileonrails: ¿Cuántos usuarios tiene el sistema?¿Cuál es el volumen de información almacenada (GB de fotos, videos, etc)?
@michelson: hay a la fecha 2.134 artistas y 27.627 imágenes, en GB eso es cerca de los 25 GB en imágenes, videos no almacenamos solo vinculamos de otras fuentes.
@chileonrails: ¿qué problemas técnicos has debido sortear o aprender a manejar durante el desarrollo del sistema para manejar el volumen de información del sistema?
@michelson: Aunque el volumen de trafico no es muy alto, es un sitio con una subida intensiva de imágenes y en rails eso es algo que puede ser complejo en términos de performance, por lo que en su momento desarrollamos un plugin llamado “detached_carrot” (http://github.com/michelson/detached-carrot), el cual sirve para enviar a encolamiento los procesos de corte de imagen y subida a Amazon S3 (https://s3.amazonaws.com/) , este plugin usa RabbitMQ (http://www.rabbitmq.com/) para las colas, es rapidísimo (es Erlang
), y como acompañamiento uso unos módulos de Nginx el “upload-progress” (http://wiki.nginx.org/NginxHttpUploadProgressModule) y el “upload-module” (http://www.grid.net.ru/nginx/upload.en.html), que hace que todo el proceso del upload pase por Nginx (procesado por C) y no por Ruby, es una maravilla, y nunca tuvimos problemas con el llamado “bloqueo de procesos” en la subida de archivos.
@chileonrails: ¿Alguna gema o plugin que utilizas y que desees recomendar?
@michelson: claro! muchas, estas son algunas, la primera es “Bundler” (http://github.com/carlhuda/bundler) para manejar las dependencias de las gemas, funciona realmente bien y ya en Rails 3 es un estándar
“Nokogiri” (http://nokogiri.org/) el parseador html y xml y con eso ’sanitize’ para limpiar html de caracteres y lo que queramos , por fin una solución al sanitizado de html de verdad, “Hoptoad Notifier” (http://github.com/thoughtbot/hoptoad_notifier) para notificación de errores, “Capistrano” (http://www.capify.org/index.php/Capistrano) para los deploys aunque ya quiero incarle el diente a “Imploy”, “Haml” (http://haml-lang.com/), “Sass” y “Compass” (http://compass-style.org/docs/) para el frontend, para testing uso “Rspec”, “Steak” , “Capybara” , “Delorean” , “Factory Girl” y “Faker”.
Ah! … y como no recomendar mi plugin “lazy_high_charts” (http://github.com/michelson/lazy_high_charts) para hacer gráficos con HighCharts (es rapido, muy rapido
)
@chileonrails: ¿Cuáles son los sitios de Rails/Ruby que visitas frecuentemente?
@michelson: rubyflow.com todos los dias, y ahora he estado frecuentando el nuevo proyecto de Peter Cooper coder.io , los railscasts de Ryan Bates me los hago chupete y la lista de correos ror-es para cuando no encuentro la respuesta en Google.
@chileonrails: Alguna recomendación/sugerencia para la gente que se inicia en Rails?
@michelson: que lo disfruten , es la mejor decisión que habrán tomado en sus vidas
Recuerda, si tienes (o conoces) algún un proyecto Ruby o Ruby on Rails que desees difundir avisanos a info@chileonrails.cl.
Saludos!
31
desarrollado en Chile: “Clerk.im”
2 Comentarios | Post por rodrigo.orrego en desarrollado en chile, rails
Nos contactamos con Fabián Ramirez (@dokshor) del equipo AyerViernes para que nos cuente un poco más de este proyecto.
@chileonrails: ¿Como nace el proyecto “Clerk”?
@dokshor: La idea Clerk, viene desde la empresa AyerViernes S.A., para satisfacer una necesidad de la Gestión Hotelera para la PYME.
Nos dimos cuenta de los altos costos que se cobra por un software de escritorio, y vimos la oportunidad de realizar algo mucho mas eficiente.
@chileonrails: ¿A quien está enfocado este sistema? ¿Es solo para hoteles grandes y/o que se encuentren en Latinoamérica?, ¿Cuales son sus principales características?
Vamos enfocados a la PYME en todo el mundo. Actualmente nuestro sistema cuenta con Inglés y Español, pero en un futuro próximo no descartamos realizar la traducción de múltiples lenguajes de la aplicación.
Nuestra principal característica es que jugamos con el factor “Tiempo vs Espacio” en nuestra novedosa interfaz de gestión hotelera, para así llegar a un nivel de inteligencia del negocio que permita saber de todo lo que pasa tiempo real.
Clerk Tour (Español) from Clerk.im on Vimeo.
@chileonrails: ¿Cuáles son los próximos pasos que tienen planificados para este proyecto?
@dokshor: Nuestro próximo paso es liberar la API, para que todos los desarrolladores o sistemas ya existentes, puedan unirse a nosotros y trabajar en forma conjunta, así lograremos una gran atención externa, por ser un sistema que se pueda comunicar con el negocio local en tiempo real.
@chileonrails: Algunas preguntas sobre AyerViernes:
Ustedes tienen un equipo distribuido (tú no estas en chile), como lo hacen para trabajar?
@dokshor: Nosotros somos un equipo multidisciplinario que se especializa en diferentes áreas, tales como:
- Diseño Front
- Arquitectura de la información
- Usabilidad
- Programación
La idea es juntar todos esos conocimientos de gente de provincia (Viña del Mar), y unirlos para realizar un producto que sea fácil de usar, rápido y confiable.
@chileonrails: ¿Cuanto tiempo que llevan trabajando con Ruby on Rails?¿En la empresa manejan solo Rails o también manejan otros frameworks para los desarrollos?
@dokshor: Actualmente en AyerViernes S.A. trabajamos Ruby on Rails para Clerk, pero dentro manejamos otros frameworks como es el caso de CakePHP y Wordpress. Queremos ir en un futuro realizando mas proyectos personales que serán realizados todos con Ruby on Rails esperamos.
@chileonrails: Algunas herramientas, gemas o plugins que utilicen y que quieran recomendar?
@dokshor: Sí, utilizamos mucho el servidor Nginx, que actúa como proxy de balanceo y distribución de carga. También utilizamos gemas de ruby, tales como:
Dentro de los plugins de Rails utilizamos:
El resto es un sistema totalmente independiente que hemos ido modelando con el tiempo del desarrollo y las necesidades que habíamos tenido en su debido momento.
@chileonrails: Muchas gracias por tu tiempo Fabián!
Así que ya saben, si necesitan un sistema que les permita manejar un hotel de forma fácil y a un precio razonable revisen www.clerk.im.
Acá terminamos con la primera de muchas entrevistas que vendrán. Si tienes un proyecto Ruby o Ruby on Rails que desees difundir avisanos a info@chileonrails.cl.
Saludos!
10
Tutorial Rails parte I: Introducción a Helpdesk
3 Comentarios | Post por lucho en rails, ruby
Este es el primer post para desarrollo web con Ruby on Rails, y cada semana trataremos de ir publicando artículos, tutoriales, notas y actualidad sobre este maravilloso framework y lo que ocurre con éste en Chile y el resto del mundo.
Para ejemplificar lo que haremos de aquí en adelante será desarrollar una aplicación de solicitud de soporte o de tickets llamado Helpdesk- no del tamaño o complejidad como pueden ser trac o lighthouseapp – a través de una serie de pasos o entregas, en los cuales se irán agregando funcionalidades cuando se requiera (tal es el caso de la autenticación, búsqueda, escalabilidad, entre otros). Como aclaración, un ticket es una solicitud de soporte en donde cada cliente llena un formulario, esperando que ésta sea respondida.
Empezaremos desde lo más básico en este primer post. No entraremos en detalle de cómo se instala ruby, rails (guides.rubyonrails.org), si estás en windows, mac o linux, o qué editores usas como textmate, emacs o {vi =>
}. Se asume que tienes todo lo necesario para empezar a desarrollar la aplicación, si es el caso contrario, date un paseo por google. También se asume que sabes al menos crear una aplicación como un blog, de los cuales está lleno de tutoriales por la red.
La versión usada de rails para este tutorial es la 2.3.4, ruby 1.8.7, rubygems 1.3.5. Ahora, el inglés será nuestro lenguaje en cuanto a nombres de modelos, mensajes y todo lo relacionado con rails, para una mayor convención. En un apartado siguiente nos enfocaremos a internacionalizar la aplicación (i18n), pero por el momento solo inglés.
Espero les guste.
Aplicación Helpdesk
Podríamos pasar días haciendo minitutoriales con mucho esfuerzo para demostrar funcionalidades de rails, pero no es la idea. Haremos una aplicación que iremos completando en el camino cuando nuestro “cliente”, una manera de decir, nos pida más funcionalidades.
Nuestra aplicación nos ayudará a ilustrar muchas de las características del desarrollo en rails. Veremos etapas como la creación del proyecto, manejo de sesiones, páginas de mantención de modelos o crud’s (a menudo también llamados “maestros”), caché, búsquedas, y muchas más, hasta llegar a completar una aplicación de mediana complejidad.
Bueno empecemos dejemos el blah blah.
Qué hace Helpdesk.
Una solicitud de soporte o, de aquí en adelante un ticket, asigna un identficador único a solicitudes de soporte, de forma de facilitar el seguimiento y manejo de dichas solicitudes así como cualquier interacción con sus clientes (es.wikipedia.org/wiki/Open-source_Ticket_Request_System).
Lo esencial de nuestra aplicación es que podamos ingresar tickets, editarlos y eliminarlos. Ahora cada ticket tiene un estado o status, los cuales nuestro cliente los tiene bien definidos (aunque éstos puedan cambiar en el tiempo, no debiera ser mayor complejidad). Los estados de un ticket pueden ser: new, open, hold, resolved, invalid. También contiene comentarios acerca de una posible solución o simplemente para agregar más detalles en relación al ticket.
Nota: en cuanto a que un ticket sea asignado a un usuario se verá en la siguiente parte de este tutorial.
Después de conversar estos temas con nuestro cliente, estamos listos para empezar a desarrollar la aplicación basándonos en nuestro entendimiento aunque sea a modo básico.
El desarrollo será del modo incremental, esto significa que no necesitaremos la especificación completa del sistema, sino que con una pequeña descripción de lo que quiere nuestro “cliente” podremos crear inmediatamente la funcionalidad pedida.
En esta primera iteración haremos lo siguiente:
- Creación del esqueleto de nuestra aplicación
- Generar los modelos
- Versión inicial o crud’s de nuestros modelos
Creación del esqueleto de nuestra aplicación
rails helpdesk
Esto crea el directorio en donde trabajaremos desde ahora en adelante. Por defecto nuestra base de datos será sqlite3. Pueden usar una distinta base de datos para trabajar con rails.
cd helpdesk rake db:create
Con este comando crearemos nuestras base de datos si todo está bien configurado en el archivo config/database.yml.
Generar los modelos
En la etapa del modelamiento con nuestro cliente, ya obtuvimos 3 modelos: Ticket, Status y Comment. Avancemos con la creación de estos.
ruby script/generate scaffold status name:string
Como ya se dijo anteriormente el Status puede corresponder a cinco tipos: new, open, hold, resolved, invalid. La generación del modelo Status implica (no siempre) la creación de un archivo de migración en la cual antiguamente se veía de esta manera (rails < 2.3.4):
class CreateStatuses < ActiveRecord::Migration
def self.up
create_table :statuses do |t|
t.string :name
t.timestamps
end
Status.create(:name => "new")
Status.create(:name => "open")
Status.create(:name => "hold")
Status.create(:name => "resolved")
Status.create(:name => "invalid")
end
def self.down
drop_table :statuses
end
end
Mmm ahora con rails en su versión 2.3.4 esto ha cambiado para que no toquemos las migraciones. A lo que nos referimos es a los seeds o datos semilla para poder poblar o cargar un conjunto de datos iniciales commit. El archivo encargado de esto se encuentra bajo db/seeds.rb el cual refactorizando nuestra migración de más arriba quedaría así:
class CreateStatuses < ActiveRecord::Migration
def self.up
create_table :statuses do |t|
t.string :name
t.timestamps
end
end
def self.down
drop_table :statuses
end
end
Y nuestro archivo db/seeds.rb
Status.create(:name => "new") Status.create(:name => "open") Status.create(:name => "hold") Status.create(:name => "resolved") Status.create(:name => "invalid")
Veamos el segundo modelo Ticket. De modo minimalista contiene un campo subject que contiene una breve descripción, y el campo body el cual es el cuerpo del mensaje en detalle. Ahora cada ticket está asociado con un status o estado. Por lo cual la generación será de esta manera.
ruby script/generate scaffold ticket subject:string body:text status:references
Ahora el tercer modelo Comment representa los comentarios del ticket en cuestión. Se compone de dos campos: body que es el comentario en sí y ticket_id haciendo referencia al ticket que pertenece.
ruby script/generate scaffold comment body:text ticket:references
Bueno, ahora corremos las migraciones:
rake db:migrate
Y también poblaremos los statuses
rake db:seed
Nuestro archivo de configuración de rutas por otra parte
# config/routes.rb
ActionController::Routing::Routes.draw do |map|
# map.resources :tickets, :has_many => :comments
map.resources :tickets do |ticket|
ticket.resources :comments
end
map.resources :statuses
map.root :tickets
end
El resto del código fuente se encuentra en github.com. Para clonar nuestro repositorio y correr helpdesk:
git clone git://github.com/chileonrails/helpdesk.git cd helpdesk rake db:migrate rake db:seed ruby script/server
Bueno y llegamos al fin de la primera entrega, espero que les haya servido. El fuente se encuentra en github así que podrán descargarlo y revisar los modelos, controladores y vistas. Cualquier corrección al tutorial por favor enviar un correo.
Esta primera entrega, solo se trató la introducción para poder tener la base para el tutorial completo. Como el código fuente completo se encuentra en github.com no es necesario detallar qué se hizo en cada paso. En las siguientes entregas se verán temas más avanzados sobre rails que iremos discutiendo con el paso del tiempo.
Esperamos sus comentarios. Y ya estamos trabajando para poder tenerles la segunda parte.
Hola a todos !! estamos relanzando el portal chileonrails.cl
Trataremos de mantenerlo actualizado constantemente.
Saludos










