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ó utilizarprint 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: rails, ruby, RubyOnRails
Posted by Spejman at 1:10 p. m. | 2 comments 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_HOMEEste 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:
- http://forums.site5.com/showthread.php?t=11954&highlight=ruby+gem
- http://blog.nanorails.com/articles/2006/08/12/install-your-own-ruby-on-a-shared-host
Etiquetas: hosting, rails, ruby, RubyOnRails
Posted by Spejman at 11:00 a. m. | 2 comments 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:
- Descargar el código del repositorio subversion:
script/plugin source http://svn.techno-weenie.net/projects/plugins
- Instalar el plugin
script/plugin install acts_as_authenticated
- Generar el modelo User y el controlador Account
script/generate authenticated user account
- 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: rails, ruby, RubyOnRails
Posted by Spejman at 8:00 p. m. | 29 comments 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: rails, RubyOnRails
Posted by Spejman at 11:22 a. m. | 1 comments 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".
- Instalar memcached en Ubuntu
apt-get install memcached - Instalar la ruby gem
sudo gem install cached_model - 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' - 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:
- Página de CachedModel: http://dev.robotcoop.com/Libraries/cached_model/
- Página de memcached: memcached
Etiquetas: rails, ruby, RubyOnRails, ubuntu
Posted by Spejman at 10:46 a. m. | 0 comments 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: rails, ruby, RubyOnRails
Posted by Spejman at 7:09 p. m. | 0 comments 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: linux, rails, ruby, RubyOnRails, ubuntu
Posted by Spejman at 3:04 p. m. | 2 comments read on
Instalar Ruby on Rails en Ubuntu Edgy
1. Instalar RubyEste 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: linux, rails, ruby, RubyOnRails, ubuntu
Posted by Spejman at 2:27 p. m. | 7 comments read on