
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!
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.
- 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 - 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: rails, ruby, RubyOnRails
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 comandocap 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: capistrano, rails, ruby, RubyOnRails
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
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:
- http://ar.rubyonrails.org/
- Rails: ActiveRecord Serialize method
- Querying serialized data in ActiveRecord
Etiquetas: rails, ruby, RubyOnRails