Instalar Ubuntu 7.04 Feisty Fawn

Hoy a salido la nueva versión de Ubuntu Linux, Ubuntu 7.04 Feisty Fawn. He aprovechado que tenía un pc por reinstalar y una vez he conseguido bajarme el CD de instalación (no ha sido fácil debido a la demanda...) lo he instalado.

La verdad es que la instalación cada vez es más fácil, la parte tradicionalmente más complicada es la de las particiones, en esta versión está muy bien explicada convirtiéndose en un paso más. He notado que han añadido a la instalación una herramienta de migración desde windows, pero como el pc no tenia windows no he podido probarla.

El sistema en apariencia no cambia mucho respecto a la anterior versión. Lo que me ha gustado mucho es el detector de redes wifi instalado por defecto, aparece al pulsar en la imagen de la red que aparece por defecto a la izquierda de la fecha. Este detector permite conectarnos fácilmente a cualquier red disponible con un simple click, algo que se echaba a faltar en versiones anteriores.

Como siempre es recomendable instalar una herramienta que nos ayude con los paquetes más comunes que requieren una configuración complicada. Yo he usado automatrix2. Al instalarlo me he encontrado con un problema de fácil solución (faltaban librerías). En resumen, los pasos a seguir para instalar automatrix2 son:
sudo apt-get install python2.4-minimal python2.4
wget http://www.getautomatix.com/apt/dists/feisty/main/binary-i386/automatix2_1.1-4.3-7.04feisty_i386.deb
sudo dpkg -i automatix2_1.1-4.3-7.04feisty_i386.deb

Posteriormente ejecutamos automatrix2 y escogemos los paquetes a instalar:
automatrix2

Con esto ya tendremos Ubuntu instalado, a ver que nuevas sorpresas nos da esta versión!

Etiquetas: ,

Posted by Spejman at 7:27 p. m. | 2 comments read on

Crear controladores y vistas en plugins Ruby on Rails

Uno de los plugins que forman el proyecto meta-rails (http://meta-rails.rubyforge.org)
se encarga de hacer un diagrama de las clases de la aplicación y proporciona un generador
de consultas a estas clases. Para realizar esto necesitaba cargar controladores y sus vistas
directamente desde este plugin.

Después de documentarme y hacer pruebas he encontrado la manera de hacerlo fácil.

  1. Cargar los controladores
    Todos los plugins en ruby on rails pueden tener el archivo init.rb en su carpeta raiz
    que se ejecuta al cargar la aplicación rails. Este archivo es el hook (gancho) que podemos
    utilizar para introducir código del plugin en la aplicación rails.

    Si ponemos nuestros controladores en el subdirectorio del plugin app/controllers, para cargarlos
    podemos utilizar el código siguiente:

    directory = "#{RAILS_ROOT}/vendor/plugins/NOMBRE_DEL_PLUGIN"
    controller_path = File.join(directory, 'app', 'controllers')
    require "#{controller_path}/NOMBRE_DEL_CONTROLADOR.rb"
    $LOAD_PATH << controller_path
    if defined?(RAILS_GEM_VERSION) and RAILS_GEM_VERSION >= '1.2.0'
    Dependencies.load_paths << controller_path
    else
    raise "Engines plugin is needed for running NOMBRE_DEL_PLUGIN with \
    a Ruby on Rails version < 1.2.0" if Dir["#{RAILS_ROOT}/vendor/plugins/engines"].empty?
    end
    config.controller_paths << controller_path


    Analizando el código vemos que este código se ejecuta de manera diferente según utilizemos
    versiones de Ruby on Rails posteriores a 1.2.0 o previas. Esto es porque para que funcione
    en versiones anteriores a 1.2.0 necesitamos el plugin engines instalado (http://rails-engines.org).

    Una vez puesto este código podemos crear nuestros controladores haciendo que hereden de ActionController::Base:

    class MetaQuerierController < ActionController::Base

    def index
    render :text => "Funciona!"
    end

    end

  2. Vistas para nuestros controladores
    Una vez hemos cargado los controladores, tenemos que asignarles los subdirectorios donde pueden
    encontrar sus vistas. Esto lo hacemos con cambiando una variable de clase con self.template_root:

    class MetaQuerierController < ActionController::Base
    self.template_root = "#{RAILS_ROOT}/vendor/plugins/meta_querier/app/views/"
    end


Espero que te sea de utilidad, puedes encontrar más información en:
  • http://weblog.techno-weenie.net/2007/1/24/understanding-the-rails-initialization-process

Etiquetas: , ,

Posted by Spejman at 8:33 a. m. | 0 comments read on

Logs del servidor con capistrano

Acabo de probar esta "receta" para capistrano publicada por DrNic. La encuentro muy útil, permite ver los logs del servidor ruby on rails mediante el comando cap log.

Código a insertar en config/deploy.rb:
# logs
desc "Devuelve las últimas líneas del archivo de log. Uso: cap log [-s lines=200] [-s rails_env=production]"
task :log do
lines = configuration.variables[:lines] || 200
rails_env = configuration.variables[:rails_env] || 'production'
run "tail -n #{lines} #{current_path}/log/#{rails_env}.log" do |ch, stream, out|
puts out
end
end


Una vez insertado este código podemos utilizarlo así:
cap log
cap log -s lines=1000
cap log -s lines=1000 rails_env=development


Más información:

Etiquetas: , , ,

Posted by Spejman at 10:26 a. m. | 0 comments read on

Error "no such file to load — net/https" con Ruby en Ubuntu

Cuando utilizamos librerías en ruby que llaman a "net/https" en Ubuntu, habitualmente aparece el error:

custom_require.rb:27:in `gem_original_require’: no such file to load — net/https (MissingSourceFile)


A mi concretamente me ocurrió al instalar hpricot, una librería para parsear html fácilmente.

Para solucionarlo hay que instalar las librerías openssl-ruby:

apt-get install libopenssl-ruby

Etiquetas: ,

Posted by Spejman at 9:53 p. m. | 1 comments read on

Serializar objetos en Ruby on Rails con Active Record

Muchas veces nos es cómodo guardar en la base de datos estructuras de datos como arrays o hashes.

En Ruby on Rails podemos hacerlo fácilmente con el método serialize de ActiveRecord. Este método permite guardar objetos en un campo de la base de datos en formato texto. Utiliza el formato YAML para convertir el objeto a texto.



class Ejemplo < ActiveRecord::Base
serialize :datos
end

Ahora podemos utilizar la clase Ejemplo de la siguiente manera:



ej = Ejemplo.create(:datos => {'clave1' => 'atributo1', 'clave2' => 2 })
puts ej.datos['clave2']

Utilizar serialize nos puede ahorrar muchas líneas de código ;)



Más información:

Etiquetas: , ,

Posted by Spejman at 9:45 p. m. | 0 comments read on
Recommend Me


XING
View Sergio Espeja's profile on LinkedIn













Enlaces