Completar con el tabulador y colorear irb con Wirble

Hoy he probado Wirble siguiendo el tutorial en ingles de Ruby Inside y lo encuentro muy útil, sobretodo porque permite autocompletar con el tabulador! Se acabó utilizar print objeto.methods.sort.join("\n") cada vez que no te acuerdas del nombre de un método.

Para utilizarlo hay que instalar la gem:

gem install -y wirble


Y si utilizas linux hay que editar el archivo ~/.irbrc y añadir:

require 'rubygems'
require 'wirble'
Wirble.init
Wirble.colorize


En Windows no se como funcionará si alguien lo sabe que me lo diga y actualizo el post. En mac os supongo que funcionará igual.

Etiquetas: , ,

Posted by Spejman at 1:10 p. m. | 2 comments | links to this post read on

Instalar ruby gems en servidores compartidos sin permisos de root

Para realizar esto necesitamos saber donde están alojadas actualmente las ruby gems y añadir un nuevo repositorio en un subdirectorio nuestro (por ejemplo /home/Nombre_De_Usuario/gems), cambiando las variables GEM_PATH y GEM_HOME

Este pequeño truco nos permite tener un servidor 100% funcional para trabajar con Ruby on Rails en servidores de hosting con precios muy competitivos como Site5, que perdonad por la publicidad pero me impresionó: ofrecen unos atractivos 5TB de transferencia al mes, 55 Gb de espacio, 55 dominios, etc por 5$ al mes si pagas 2 años por adelantado, osea 120$ pero tienes 60 días de prueba, si no te gusta te devuelven el dinero, bueno no hago más publicidad, si os interesa aquí tenéis más información: Site5

Explicación paso a paso


Para ver dónde están las ruby gems actualmente hay que ejecutar el comando desde una consola en el servidor compartido:

gem environment


Este comando generará una salida similar a esta:

Rubygems Environment:
- VERSION: 0.8.10 (0.8.10)
- INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
- GEM PATH:
   - /usr/lib/ruby/gems/1.8
- REMOTE SOURCES:
   - http://gems.rubyforge.org


Una vez hemos creado el subdirectorio /home/Nombre_De_Usuario/gems, podemos cambiar las variables GEM_PATH y GEM_HOME creando un archivo llamado .gemrc en nuestra carpeta personal /home/Nombre_De_Usuario. El formato del archivo .gemrc es YAML, por lo que tiene que ser como el siguiente cambiando Nombre_De_Usuario y /usr/lib/ruby/gems/1.8 por nuestro nombre de usuario y por el anterior GEM PATH (que hemos averiguado con el comando gem environment) respectivamente.

.gemrc:
gemhome: /home/Nombre_De_Usuario/gems
gempath:
- /home/Nombre_De_Usuario/gems
- /usr/lib/ruby/gems/1.8


Si ahora ejecutamos gem environment obtenemos:

Rubygems Environment:
- VERSION: 0.8.10 (0.8.10)
- INSTALLATION DIRECTORY: /home/Nombre_De_Usuario/gems
- GEM PATH:
   - /home/Nombre_De_Usuario/gems
   - /usr/lib/ruby/gems/1.8
- REMOTE SOURCES:
   - http://gems.rubyforge.org


Mas información:

Etiquetas: , , ,

Posted by Spejman at 11:00 a. m. | 2 comments | links to this post read on

Autenticación o login de usuarios en Ruby on Rails

Existe un plugin para Ruby on Rails llamado Acts As Authenticated que nos ahorra la siempre repetitiva tarea de la autenticación ( login ) de usuarios en RoR, crea el modelo para el usuario, el controlador y las vistas para realizar login, logout, comprobar si el usuario esta autenticado, etc ...

La instalación es simple, ejecutar los siguientes comandos desde la raíz de la aplicación rails:

  1. Descargar el código del repositorio subversion:
    script/plugin source http://svn.techno-weenie.net/projects/plugins

  2. Instalar el plugin
    script/plugin install acts_as_authenticated

  3. Generar el modelo User y el controlador Account
    script/generate authenticated user account

  4. Crear la tabla de usuarios en la base de datos
    rake migrate



Para configurarlo y empezarlo a usar tenemos que mover la linea que pone "include AuthenticatedSystem" de /app/controllers/account_controller.rb a /app/controllers/aplication.rb

Finalmente tenemos que decidir si queremos añadir autenticación a por defecto a todas las páginas y explicitar las páginas que queremos que sean públicas, o tener por defecto todas las páginas públicas y marcar las páginas que queremos autenticar una a una.

Para la primera opción tenemos que añadir la linea "before_filter :login_required" en /app/controllers/aplication.rb y la línea "skip_before_filter :login_required" en los controladores de las páginas que queremos que sean públicas.

Si por el contrario deseamos que todas las páginas sean por defecto públicas, debemos explicitar en las páginas que queremos autenticación añadiendo la línea "before_filter :login_required" en su controlador:

class MiPaginaProtegidaController < ApplicationController
before_filter :login_required
end


Si queremos autenticar solo algunas acciones dentro del controlador, podemos usar el parámetro "only" de la función "login_required". Por ejemplo si sólo queremos que se necesite autenticación en las acciones edit y update del controlador:

class MiPaginaProtegidaController < ApplicationController
before_filter :login_required, :only => [ :edit, :update ]
end


El único problema que le he encontrado a este plugin es que el formulario de login ( /app/views/account/login.rhtml) no funciona, debeis reemplazarlo por:


<%= start_form_tag %>
<p><label for="login">Login</label><br/>

<%= text_field_tag 'login' %></p>

<p><label for="password">Password</label><br/>
<%= password_field_tag 'password' %>
</p>

<!-- Uncomment this if you want this functionality
<p><label for="remember_me">Remember me:</label>
<%= check_box_tag 'remember_me' %></p>
-->

<p>
<%= submit_tag 'Log in' %></p>

<%= end_form_tag %>

Más información (en inglés): http://technoweenie.stikipad.com/plugins/show/Acts+as+Authenticated

Etiquetas: , ,

Posted by Spejman at 8:00 p. m. | 29 comments | links to this post read on

¿Como convencer a alguien para que use Ruby on Rails?

Supongo que algunos de vosotros os habréis hecho esta misma pregunta, si habéis encontrado la respuesta agradecería que la pusieseis en los comentarios de este blog ;)

Me explico, la semana que viene intentaré convencer a unos amigos de mi antiguo trabajo de lo que van a ganar en calidad de vida si se pasan a Ruby on Rails. Parece tarea fácil si no fuera porque están un poco hartos de oír sobre frameworks maravillosos que automatizan todo, pero que a la hora de la verdad si te sales de lo común no hacen más que aumentar el sufrimiento del programador.

Mi idea es hacer unas transparencias donde mostrar por encima el mundo Ruby y Ruby on Rails, y acabar con una demo. Toda esta documentación la colgaré para ayudar a otros "evangelizadores" de Ruby on Rails ;)

  • ¿Que partes de Rails destacaríais? Yo he pensado centrarme en el modelo MVC, ActiveRecord, migrations y partials.

  • ¿Como demostraríais que Ruby mola?He pensado empezar con la comparación de Ruby con C# de rubyclr.com y continuar con ideas que he visto en la presentación de Sergio Gil en la conferencia rails hispana:
    • Cercano a nuestra forma de pensar
    • Minimiza el código:
      • Menos errores de código
      • Código más bonito


Cualquier idea que se os ocurra (ejemplos de código, característica de Ruby o de Rails a destacar, etc) puede ayudar para hacer un documento más útil.

Gracias a todos por adelantado!

Etiquetas: ,

Posted by Spejman at 11:22 a. m. | 1 comments | links to this post read on

Cachear objetos del modelo en Ruby on Rails con Memcached en Ubuntu

Cachear objetos del modelo en Ruby on Rails es muy fácil utilizando CachedModel, que permite cachear los objetos de nuestra aplicación Rails que recuperamos uno a uno. Es decir, acelera consultas del tipo Modelo.find(:first) o Modelo.find(id).

Para usarlo debemos instalar memcached y hacer que nuestras clases del modelo extiendan de "CachedModel" en lugar de "ActiveRecord::Base".


  1. Instalar memcached en Ubuntu

    apt-get install memcached



  2. Instalar la ruby gem

    sudo gem install cached_model



  3. Configurar nuestro proyecto rails
    Poner la siguiente linea con el nombre de nuestro proyecto en el archivo config/environment.rb

    # Conf. CachedModel
    require 'cached_model'

    memcache_options = {
    :c_threshold => 10_000,
    :compression => true,
    :debug => false,
    :namespace => 'NOMBRE_DE_NUESTRO_PROYECTO_RAILS',
    :readonly => false,
    :urlencode => false
    }

    CACHE = MemCache.new memcache_options
    CACHE.servers = 'localhost:11211'




  4. Cachear las clases
    Substituir en cada clase del modelo que nos interese cachear donde pone "ActiveRecord::Base" por "CachedModel"
    Ejemplo:

    class MiClase < CachedModel
    end




Enlaces:

Etiquetas: , , ,

Posted by Spejman at 10:46 a. m. | 0 comments | links to this post read on

Crear Ruby Gems fácilmente

Las ruby gems permiten instalar librerías de Ruby con un simple comando desde cualquier máquina que interprete Ruby y tenga ruby gems instalado.

Para crear Ruby gems fácilmente podemos utilizar la librería NewGem

1. Instalación:

gem install newgem


2. Creación del esqueleto de la ruby gem

newgem NOMBRE_DE_LA_NUEVA_GEM


Este script creará varios ficheros y subdirectorios necesarios para automatizar todo lo que habitualmente necesitamos para gestionar la creación y difusión de ruby gems.

3. Copiar el código de nuestra gem

Todo el código que queremos empaquetar en la ruby gem tenemos que copiarlo en el subdirectorio que ha creado el script anterior llamado lib/NOMBRE_DE_LA_NUEVA_GEM

Esto funciona porque en el archivo lib/NOMBRE_DE_LA_NUEVA_GEM.rb incluye automáticamente todos los archivos .rb del subdirectorio lib/NOMBRE_DE_LA_NUEVA_GEM, magia? no, una linea en ruby:

lib/NOMBRE_DE_LA_NUEVA_GEM.rb:
Dir[File.join(File.dirname(__FILE__), 'NOMBRE_DE_LA_NUEVA_GEM/**/*.rb')].sort.each { |lib| require lib }


4. Número de versión

Antes de generar nuestra gem es mejor indicar el número de versión de esta. El fichero lib/NOMBRE_DE_LA_NUEVA_GEM/version.rb contiene las constantes MAYOR, MINOR y TINY. Los valores que demos a estas constantes servirán para definir la versión de la gem.

lib/NOMBRE_DE_LA_NUEVA_GEM/version.rb:
module NOMBRE_DE_LA_NUEVA_GEM #:nodoc:
module VERSION #:nodoc:
MAJOR = 0
MINOR = 0
TINY = 1

STRING = [MAJOR, MINOR, TINY].join(’.')
end
end


5. Crear la gem

rake package


Este comando nos generará la gem con el nombre NOMBRE_DE_LA_NUEVA_GEM-MAYOR.MINOR.TINY.gem en el subdirectorio pkg.

6. Instalar la gem en nuestro sistema

gem install pkg/NOMBRE_DE_LA_NUEVA_GEM-MAYOR.MINOR.TINY.gem


Si queremos que todo el mundo pueda usar nuestra gem con el comando gem install NOMBRE_DE_LA_NUEVA_GEM tenemos que crear un proyecto en RubyForge y crear un fichero con la gem que acabamos de generar.

Etiquetas: , ,

Posted by Spejman at 7:09 p. m. | 0 comments | links to this post read on

Instalar RMagick en Ubuntu ( gestión avanzada de imágenes en Ruby )

RMagick permite modificar y realizar efectos en imágenes desde Ruby, y por supuesto desde Ruby on Rails. Realmente RMagick es una interfície a los programas ImageMagick y GraphicsMagick que permiten realizar multitud de transformaciones a imágenes.

Instalar RMagick en Ubuntu no es tan directo como instalar un paquete habitual, hay que instalar el paquete imagemagick, luego unas librerías de desarrollo y finalmente la ruby gem rmagick.

1. Instalar ImageMagick

sudo apt-get install imagemagick


2. Instalar las librerías de desarrollo de ImageMagick
2.1. Ver la versión de la librería de desarrollo de ImageMagick

dpkg -l | grep magick


Al ejecutar este comando aparecerá por consola una linea similar a esta:

ii libmagick9 6.2.4.5.dfsg1-0.10ubuntu0.1 Image manipulation library


La segunda columna indica el nombre de la librería de ImageMagick, la de desarrollo se llama igual añadiéndole el sufijo "-dev" (libmagick9-dev).

2.2. Instalarla

sudo apt-get install libmagick9-dev


3. Instalar la ruby gem rmagick.

sudo gem install rmagick


Para más información sobre que se puede hacer con RMagick:
http://rmagick.rubyforge.org/

Etiquetas: , , , ,

Posted by Spejman at 3:04 p. m. | 2 comments | links to this post read on

Instalar Ruby on Rails en Ubuntu Edgy

1. Instalar Ruby

Este paso instala el lenguaje Ruby, los gestores de documentación de ruby rdoc y ri, y la consola interactiva de ruby irb.


sudo apt-get install ruby ruby1.8 ruby1.8-dev rdoc ri irb


2. Instalar MySQL
2.1. Descargar y instalar el servidor y las librerías de conexión con ruby

sudo apt-get install mysql-server libmysql-ruby

2.2. Configurarlo

mysqladmin -u root password NUEVO_PASSWORD
sudo /etc/init.d/mysql restart

2.3. Instalar herramientas para administrar y consultar MySQL

sudo apt-get install mysql-query-browser mysql-admin

3. Instalar Ruby Gems

Ruby Gems es el sistema de gestión de paquetes de ruby que permite instalar librerias y aplicaciones ruby de manera muy simple como veremos en el punto 4. A día de hoy, Ubuntu no incluye ruby gems en sus repositorios.

3.1 Instalar la versión 0.9.0 de rubygems

wget http://rubyforge.org/frs/download.php/17190/rubygems-0.9.2.tgz
tar zxvf rubygems-0.9.2.tgz
cd rubygems-0.9.2
sudo ruby setup.rb
cd ..; rm -rf rubygems-0.9.2; rm rubygems-0.9.2.tgz


4. Instalar Ruby on Rails

Instalaremos Ruby on Rails mediante ruby gem:

sudo gem install rails --include-dependencies


5. Instalar un IDE de programación RoR

El IDE que utilizo yo para programar en RoR es RadRails, puedes descargarlo en http://www.radrails.org

Actualización:
  • 12-Marzo-2007: Actualización a nueva versión de rubygems 0.9.2

Etiquetas: , , , ,

Posted by Spejman at 2:27 p. m. | 7 comments | links to this post read on
Recommend Me


XING
View Sergio Espeja's profile on LinkedIn













Enlaces