Posts Tagged ‘rails’

Cómo mostrar las sentencias SQL en la consola de Rails

// Noviembre 17th, 2009 // No Comments » // programación, tips

Al operar la consola de Rails, muchas veces quisieramos que al usar nuestros modelos se nos mostrara el SQL que se está generando.

Sólo agrega las siguientes líneas a tu archivo ~/.irbrc

1
2
3
4
5
6
7
8
if ENV['RAILS_ENV']
  # Called after the irb session is initialized and Rails has been loaded
  IRB.conf[:IRB_RC] = Proc.new do
    logger = Logger.new(STDOUT)
    ActiveRecord::Base.logger = logger
    ActiveResource::Base.logger = logger
  end
end

Ahora, cuando interactúes con la base de datos verás algo como esto:

1
2
3
>> Oficina.find 1
  Oficina Load (1.2ms)   SELECT * FROM "oficinas" WHERE ("oficinas"."id" = 1) 
=> #<Oficina id: 1, nombre: "CAMPECHE BCMR", organizacion_id: 2, activa: true>

Referencia

Showing SQL statements in the Rails console

Artículos relacionados:

Programando un PBBG en Ruby & Rails

// Noviembre 17th, 2009 // 3 Comments » // game development, programación

lobo_tuerto

Después de mi corto regreso a la programación de videojuegos, y de haber visto por ahí y leído acerca de algunos PBBGs, finalmente he decido darme a la tarea de desarrollar uno.

PBBGs

Seguramente se preguntarán ¿qué es y cómo se juega un PBBG?

PBBG == Persistent Browser Based Game
Eso básicamente quiere decir: juego persistente para navegador.

La infraestructura y herramientas necesarias para desarrollar videojuegos en el ámbito del desarrollo web no son ni remotamente cercanas a las que existen para el desarrollo de escritorio.

Así, esto se convierte básicamente en un arte, hay que diseñar y desarrollar un videojuego alrededor de una estructura de operación ya establecida como lo es el protocolo HTTP, el modelo cliente-servidor y los tiempos de respuesta acostumbrados de una página web.

Por esta razón, la gran mayoría de los PBBGs se inclinan por uno de estos dos géneros:

  • Juegos de rol
  • Juegos de estrategia

O alguna mezcla rara entre ellos.

El modelo de participación preferido y más fácil de implementar es por turnos, aunque algunos de los PBBGs más modernos están incorporando un modelo de participación en tiempo real.

Si no conoces aún algún PBBG, aquí te dejo unos enlaces para que te des una idea de cómo son y cómo se juegan:

Los juegos de estrategia tradicionalmente se dividen en: por turno (TBS) [turn based strategy] y en tiempo real (RTS) [real time strategy]. En los PBBG he visto mucho el uso de tiempo instantáneo (ITS) [instant time strategy].

Instant Time Strategy (ITS)

Por lo que he visto la estrategia en tiempo instantáneo es muy popular entre los desarrolladores de PBBGs.

Modelan combates enteros con ecuaciones y obtienen de manera inmediata el resultado de las peleas.

Aunque adecuado a la situación, este nivel de abstracción se me antoja demasiado alto para mi proyecto. Me llama la atención el implementar algo más cercano al tiempo real (o una mezcla de tiempo real y turnos).

Ahora con tecnologías como Ajax, lenguajes como Ruby y frameworks como Rails, no es tan complicado hacer un PBBG.

Ya que andamos hablando de tecnologías, les presento mi stack de desarrollo.

Mi development stack

Aquí pongo la lista de las herramientas que estoy utilizando para llevar a cabo este proyecto:

  • Linux (nada mejor para el desarrollo en general)
  • PostgreSQL (una robusta base de datos)
  • Ruby (sigo enamorado de este lenguaje)
  • Rails (web development framework)
  • jQuery (javascript framework)
  • Formtastic (excelente para lidiar con formas)
  • Authlogic (para implementar la autenticación de usuarios)
  • Haml (lenguaje para escribir las vistas HTML de la aplicación)
  • Sass (lenguaje para escribir el CSS de la aplicación)
  • Compass (framework CSS para hacer el layout de la aplicación)
  • git (version control system)
  • emacs (editor de código)

Tengo grandes planes para este PBBG: misiones, peleas entre clanes, clases variadas, habilidades especiales, mercado, subastas y una vibrante comunidad a su alrededor.

Pero como todo: debe empezar por algún lado.

Modelando los combates

Veamos un elemento que considero fundamental para este PBBG: El sistema de batallas.

En mi caso particular, si algo deseo ver funcionando primero son los combates.

Había comentado antes que quiero mis batallas en tiempo real (o algo que se le acerque). El tiempo real que puedes conseguir en una aplicación web no es el común de 60 fps de los videojuegos tradicionales.

Aquí tienes que pensar en término de peticiones por segundo a tu servidor web. GET, POST, params, sesiones, etc.

A continuación pongo una lista con algunas de las características que me gustaría ver en el sistema de batallas:

Representar y llevar a cabo un combate entre varios participantes

  • Duelos entre jugadores
  • Duelos entre NPC y jugadores
  • Duelos entre grupos de jugadores

Durante el combate los personajes podrán hacer uso de habilidades especiales, objetos y armas

  • Un guerrero puede dar un golpe especial con su arma
  • Un brujo puede hacer uso de alguna magia
  • Un guerrero puede hacer uso de una poción para curarse

En la pelea, los jugadores podrán seleccionar un objetivo para atacar

  • Un guerrero puede seleccionar al enemigo de su preferencia para recibir sus ataques

En el próximo artículo pondré algo de código del sistema de batallas, las decisiones de diseño que se tomaron y una breve explicación de cómo funciona.

Suena bien para comenzar, ¿no?

Artículos relacionados:

Cómo instalar PostgreSQL en Ubuntu 9.04 Jaunty Jackalope

// Julio 20th, 2009 // 26 Comments » // desarrollo web, linux, tutoriales

postgresql-pwns-mysql

Acabo de incorporarme a un proyecto en Rails en el que usan PostgreSQL, y como recién formateé y le puse Ubuntu 9.04 a la laptop, necesito ahora instalarle ese manejador de base de datos.

Y es un buen pretexto para por fin escribir la guía de cómo instalarlo en Ubuntu.

Como siempre, vamos a la consola y tecleamos:

1
sudo apt-get install postgresql postgresql-client postgresql-contrib libpq-dev pgadmin3

Eso instala el cliente y servidor de la base de datos, algunos scripts de utilería y la aplicación pgAdmin para administrar la base de datos. El paquete de libpq-dev nos servirá para poder compilar la gema Ruby de PostgreSQL más adelante.

Confirmemos que la instalación terminó adecuadamente teclando:

1
psql --version

En mi caso la respuesta fue:
psql (PostgreSQL) 8.3.7

Cambiar la contraseña del usuario administrador

Ahora necesitamos establecer la contraseña del usuario administrador postgres. Teclea la siguiente línea en la terminal (cambia la palabra password por la contraseña que desees usar):

1
2
3
sudo su postgres -c psql
ALTER USER postgres WITH PASSWORD 'password';
\q

Eso altera la contraseña dentro de la base de datos, ahora necesitamos hacer lo mismo para el usuario Linux postgres:

1
2
sudo passwd -d postgres
sudo su postgres -c passwd

Te aparecerá un prompt, introduce la misma contraseña que pusiste antes.

Poner a punto pgAdmin

Listo, de ahora en adelante podemos usar pgAdmin o la terminal para administrar nuestra base de datos como el usuario postgres. Pero antes de que te metas a pgAdmin deberías configurar el PostgreSQL Admin Pack, que te permite llevar un mejor registro y monitoreo de tu base de datos.

Ejecuta lo siguiente desde la línea de comandos en tu terminal:

1
sudo su postgres -c psql < /usr/share/postgresql/8.3/contrib/adminpack.sql

Para ejecutar pgAdmin ve a tu menú de aplicaciones:
Aplicaciones → Programación → pgAdmin III

Cambiar el esquema de autentificación de PostgreSQL

Al ejecutar algunos comandos de base de datos, es posible que te encuentres con un error que dice algo como:

FATAL: la autentificación Ident falló para el usuario «x»

Para evitarlo necesitas editar el archivo /etc/postgresql/8.3/main/pg_hba.conf y cambiar el esquema de autentificación. Abre el archivo con privilegios de root:

1
sudo gedit /etc/postgresql/8.3/main/pg_hba.conf

Y cambia esto:

1
2
# "local" is for Unix domain socket connections only
local all all ident sameuser

Por:

1
2
# "local" is for Unix domain socket connections only
local all all md5

Reinicia el servidor de PostgreSQL tecleando en tu terminal:

1
sudo /etc/init.d/postgresql-8.3 restart

PostgreSQL Ruby gem

Si planeas usar PostgreSQL dentro de Ruby, necesitarás esto:

1
sudo gem install postgres

En Rails, puedes crear una aplicación configurada para usar PostgreSQL con este comando:

1
rails miaplicacion -d postgresql

¡Listo! :D

Recursos

Install PostgreSQL on Ubuntu 8.04 (cómo acceder de manera remota a tu servidor)
Switching Rails to PostgreSQL

Artículos relacionados:

Railscasts — Videotutoriales de Rails

// Junio 28th, 2009 // No Comments » // programación, recomendaciones, tips, tutoriales, videos

railscasts

¿Interesado en aprender algo nuevo sobre Rails?

Entonces checa los videotutoriales que Ryan Bates ha creado en Railscasts.

¡Son cortos, de muy buena calidad y tienen tips invaluables! :)
Ve la lista completa en: El archivo de Railscasts.

Artículos relacionados:

Un par de revistas gratuitas para los rubyistas y raileros

// Junio 25th, 2009 // No Comments » // libros y revistas, programación, recomendaciones

rubyist

Ahora que he regresado de lleno al desarrollo de aplicaciones web, rondando por ahí me encontré un par de revistas con técnicas de programación, artículos y consejos para los fanáticos de Ruby y Rails.

La versión en PDF es gratuita en ambos casos, y pueden obtener la versión impresa por una módica cantidad (aprox. $9 USD).
Denles una leída, no pierden nada y pueden aprender mucho. ;)

Enlace a: the Rubyist
Enlace a: Rails Magazine

Artículos relacionados:

Cómo generar la documentación de Ruby y Rails de manera local

// Junio 22nd, 2009 // No Comments » // programación

ruby.jpg

Es difícil quitarse el hábito de consultar la documentación en línea, por lo regular ando siempre conectado a internet y se me hace muy fácil escribir en Google algo como rails doc o ruby doc, dar clic y comenzar a buscar lo que necesito en la documentación.

Recientemente me vi en la necesidad de poder acceder de manera local a la documentación de Rails y de Ruby — además de que la velocidad no se compara. :)

La documentación de Rails

Para generar la documentación de Rails tecleamos lo siguiente:

1
2
3
4
5
rails temp_app
cd temp_app
rake rails:freeze:gems
rake doc:rails
rake rails:unfreeze

Lo que hacemos es generar una aplicación temporal, después congelamos las gemas de Rails en la aplicación de ejemplo, y a continuación generamos la documentación.
El último paso se usa para descongelar las gemas en nuestra aplicación de ejemplo (aunque también podemos sólo borrar el directorio de la aplicación después de mover la documentación de ahí).

Si tienes Apache instalado en tu Ubuntu, entonces mueve la documentación a tu directorio web y elimina la aplicación de ejemplo con:

1
2
3
4
sudo mkdir /var/www/docs
sudo mv doc/api /var/www/docs/rails
cd ..
rm -rf temp_app

Ahora puedes accesarla desde:
http://localhost/docs/rails

La documentación de Ruby

Para generar la documentación de Ruby teclea lo siguiente:

1
2
cd /usr/lib/ruby/1.8
sudo rdoc -o /var/www/docs/ruby

Ahora puedes accesarla desde:
http://localhost/docs/ruby

Depredado en

Rails Documentation

Artículos relacionados:

RubyCamp México

// Junio 3rd, 2009 // No Comments » // desarrollo web, eventos, programación

rubycamp_mx.png

¡Para todos los fans de los barcamps y Ruby (♥) viene ahora RubyCamp Ciudad de Mexico – IFUNAM! :D

¿Qué es un RubyCamp?

Un RubyCamp es un conjunto de “desconferencias” (eventos abiertos y participativos) que tendrán como temas principales:

  • El lenguaje de programación Ruby
  • Ruby On Rails, Merb, Sinatra, etc

Cuyo contenido será provisto por los participantes. Este RubyCamp se realizará en el Instituto de Física de la UNAM el día 05 de junio de 2009 (¡este viernes!).

¿Cómo me puedo registrar?

Registro RubyCamp (es un evento sin costo)
Pueden ver más información en el siguiente enlace: Rubycamp

Seguramente andaré por ahí, si se animan allá vemos. ;)

Artículos relacionados:

Zed Shaw es mi héroe

// Octubre 24th, 2008 // No Comments » // andanzas

gato_muy_ingles.jpg

Al fin alguien con las bolas bien puestas en su lugar, para decir y hacer lo que le venga en gana. Y además bien hecho.

No lo voy a negar, la lectura de sus escritos me ha influenciado lo suficiente para encausar de nuevo mis esfuerzos en esta travesía que es la vida.

Vayan y lean sus rabietas y ensayos.

Cuando todo mundo mamaba a los desarrolladores de Rails, el escribió esto: Rails Is A Ghetto.
(Desgraciadamente decidió retirar de su sitio el artículo completo)

Y este otro merece una recomendación especial, ¿conoces algo de Corea?
Fortune Favors Big Turds

Artículos relacionados:

Cómo instalar Ruby, RubyGems y Rails en Ubuntu 7.10 Gutsy Gibbon

// Enero 26th, 2008 // 4 Comments » // desarrollo web, linux, tutoriales

ruby.jpg

Después de haber formateado mi laptop y haber adoptado Ubuntu como sistema operativo, me vi en la necesidad de instalar todo el stack de desarrollo con el que estoy acostumbrado a trabajar.

Un par de cosas que me urgía tener ya era Ruby y Rails.

Versión para desesperados:
(vamos a descargar un archivo, así que vayan a un directorio temporal o algo).

Al momento de escribirse este artículo la última versión en salir de RubyGems era la 1.3.1. Puedes checar cuál es la más reciente aquí.

1
2
3
4
5
6
7
8
9
10
11
12
sudo apt-get install ruby rdoc irb libyaml-ruby libzlib-ruby ri libopenssl-ruby build-essential ruby1.8-dev
wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz
tar xzvf rubygems-1.3.1.tgz
cd rubygems-1.3.1
sudo ruby setup.rb
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
sudo gem update --system
sudo gem install rails mongrel
sudo apt-get install mysql-client mysql-admin mysql-query-browser libmysqlclient15-dev
sudo gem install mysql
sudo apt-get install sqlite3 swig libsqlite3-ruby libsqlite3-dev
sudo gem install sqlite3-ruby

Si quieres saber que sucede en cada paso, sigue leyendo.

(más…)

Artículos relacionados:

Site5 – ¿Buscas un buen servicio de hosting?

// Enero 13th, 2008 // 2 Comments » // Web

Banner, 234x60px

¿Qué dirías si te ofrecieran un servicio de hosting donde te dieran 750GB de espacio en disco duro, una transferencia de 7.5TB (si, TeraBytes), y sitios web ilimitados?

¿Demasiado bueno para ser verdad? ¡Ah! y todo esto por 5 dólares al mes. :)

Conozcan a Site5, mi proveedor de hosting desde hace 2 años.

La razón por la que adquirí un plan en esta compañía, fue que eran de los pocos servicios de hosting que ofrecían soporte para Ruby on Rails (ya saben, para mis experimentos.)

Desde que contraté el servicio hasta el momento he estado muy agusto y sin queja alguna. Además, el soporte técnico es rápido y amable. ;)

Artículos relacionados:

FireStats icon Con la potencia de FireStats