Ya tenemos Rails 2.2. Necesita actualización de Ruby gems

Rails 2.2 fue liberado hace algunos días. Rayan Bates de railscasts.com ya tiene un nuevo episodio que explica un nevo feature llamado Memoize, lo que hace este memoize es casi lo mismo que se vio en su primer episodio “Caching with instance variables”, denle una revisada al material de este señor porque vale la pena.
Por cierto, si quieren actualizar su version de rails deben saber que la version 1.3.1 de rubygems es necesaria, asi que pueden intentar:
$ sudo gem update --system
Pero en mi caso y algunos otros tuvimos algunos problemas, asi que esta otra opción funciona bien
$ sudo gem install rubygems-update
Esto instala la actualización pero hay que hacerla valida asi
$ sudo update_rubygems
Y ahora que ya tenemos el rubygems instalado pues podemos actualizar rails de cuaquiera de las siguientes tres formas
$ sudo gem update gems o
$ sudo gem update rails o
$ sudo gem install rails
Para cerrar con broche de oro, simplemente revisa que tu version sea la indicada
$ rails --version
y lo que te debe regresar este comando es Rails 2.2.2
ACTUALIZACIóN:
Algo que había olvidado antes en esta guía, es que para cambiar una aplicación Rails a otra versión Rails es necesario modificar un par de líneas del environment.rb:
# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = ‘2.2.2′ unless defined? RAILS_GEM_VERSION

Luego ejecutamos la tarea rake rails:update

Ahí lo tienen.
Comentarios, preguntas, dudas o insultos son bienvenidos.
Recommend Me

Rails 2.2 just released. Rubygems update required

Rails 2.2 has been released in past few days… Rayan Bates already did a new RailsCasts explaining one of the new features “Memoize”, check that out.
By the way, if you want to upgrade your rails version you will need to upgrade your rubygems as well (in case u have the previous version).
To do this simply do
$ sudo gem update --system
This should work but some of us are getting some errors while doing this so this is the other way.
$ sudo gem install rubygems-update
This will install latest rubygems version but now we still need to make it work so do as follows
$ sudo update_rubygems
So now you have rubygems updated, you can now type
$ sudo gem update gems or
$ sudo gem update rails or
$ sudo gem install rails to get the update.
To make the fat lady sing, just check your version to make sure everything went ok
$ rails --version
this should return Rails 2.2.2 as output.
Enjoy.
Recommend Me

Instalando Ruby on Rails en Ubuntu 8.04 Hardy Heron LTS

1. Primero instalemos ruby y todas las dependencias
$ sudo apt-get install ruby irb ri rdoc ruby1.8-dev libzlib-ruby libyaml-ruby libreadline-ruby libncurses-ruby libcurses-ruby libruby libruby-extras libfcgi-ruby1.8 build-essential libopenssl-ruby libdbm-ruby libdbi-ruby libdbd-sqlite3-ruby sqlite3 libsqlite3-dev libsqlite3-ruby libxml-ruby libxml2-dev
2. Descarga el paquete rubygems desde ruby forge.
3. Extraer los contenidos del paquete y entrar al directorio recien creado.
4. Ejecutar el setup de instalación.
$ sudo ruby setup.rb
5. Crear el link.
sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
6. Actualizar rubygems.
$ sudo gem update --system
7. Si obtienes el error:

Uninitialized constant Gem::GemRunner

busca la respuesta a esto en este mismo blog.
8. Instalar rails desde gems
$ sudo gem install rails
$ sudo gem install sqlite3-ruby mongrel capistrano

9. Si vas a utilizar MySql
sudo apt-get install mysql-server mysql-client libdbd-mysql-ruby libmysqlclient15-dev
Recommend Me

Installing Ruby on Rails in Ubuntu Hardy Heron (8.04 Lts)

1. First Install ruby and rails dependencies
$ sudo apt-get install ruby irb ri rdoc ruby1.8-dev libzlib-ruby libyaml-ruby libreadline-ruby libncurses-ruby libcurses-ruby libruby libruby-extras libfcgi-ruby1.8 build-essential libopenssl-ruby libdbm-ruby libdbi-ruby libdbd-sqlite3-ruby sqlite3 libsqlite3-dev libsqlite3-ruby libxml-ruby libxml2-dev
2. Download rubygems from ruby forge.
3. Extract the contents and change directory into the recently created rubygems directory.
4. Run setup
$ sudo ruby setup.rb
5. Make the link
$ sudo ln -s /usr/bin/gem1.8 /usr/bin/gem
6. Run update
$ sudo gem update --system
7. In case you get the

Uninitialized constant Gem::GemRunner

just follow the instructions in my post with that title.
8. Install Rails from gems
$ sudo gem install rails
$ sudo gem install sqlite3-ruby mongrel capistrano

9. If you want to use MySql
sudo apt-get install mysql-server mysql-client libdbd-mysql-ruby libmysqlclient15-dev

Ruby Gems error: uninitialized constant Gem::GemRunner

Here i am trying to install Ruby on Rails for a friend, I got this error after installing ruby gems (rubygems-1.3.1.tgz), whenever i tried to use the command it exited with this error message:

uninitialized constant Gem::GemRunner

So i had to add a line of code to the file /usr/bin/gem, the line was require 'rubygems/gem_runner'

Enjoy.

Read third party HTML using Ruby on Rails and Hpricot

A few weeks ago, mi Distributed Systems class profesor asked us to implement some sort of Web Service that gave Currency Rates information in XML format. This looked pretty easy, but all went wrong when he asked us to read the HTML from a bank’s web site and retrieve the information from there.
The idea then was to read that HTML code from a reliable site, transform it and make it available for us to download or use. Looking for a free web service that presented this information and using it wouldnt have been as easy as it was for me to use Hpricot. So here is the code I wrote, I just changed the url from where i fetched the information, because I don’t know if it is legal to do that :D.

First there is the model CurrencyService
currency_service.rb
require ‘open-uri’
require ‘hpricot’

class CurrencyService “”},
{:CUR_CODE => “USD”, :MEX_EQV => get_data(”#FIX_DATA”).gsub(/ /,”).chomp},
{:CURRENCY_EQV => “”},
{:CUR_CODE => “EUR”, :MEX_EQV => get_data(”#EURO_DATA”).gsub(/ /,”).chomp},
{:CURRENCY_EQV => “”},
{:CUR_CODE => “YEN”, :MEX_EQV => get_data(”#YEN_DATA”).gsub(/ /,”).chomp},
{:CURRENCY_EQV => “”},
{:CUR_CODE => “CAN”, :MEX_EQV => get_data(”#LIBRA_DATA”).gsub(/ /,”).chomp}
}.to_xml
end

end

And then the controller

curency_service_controller.rb
class CurrencyServiceController “text/xml”,
:filename => “currencies.xml” )
end

end

Enjoy

Leer HTML de un sitio externo con Ruby on Rails y Hpricot

Hace un par de semanas mi profesor de Sistemas Distribuidos en el ITESO nos pidió hacer una especie de Web Service que te entregara información del mercado cambiaro en formato XML. Esto sonaba bastante sencillo, sin embargo todo se complicó cuando nos pidio información real tomada de la página de un banco, debiamos leerla en HTML.
La idea entonces era leer el código HTML de una página web confiable que presentara esta información y nosotros convertirla en XML con el formato solicitado. Al principio si le batalle en buscar mejor un Web Service ya hecho y gratuito que presentara esta información, sólo encontre uno aqui, sin embargo no pude encontrar un API ni nada parecido que me facilitara el uso.
Para este momento ya tenia el tiempo encima así que como de costumbre acudí a la comunidad de RoR para ver que herramientas tenía a la mano para leer HTML. Me encontré con Hpricot que es un gem que me solucionó la vida. La solución final quedo muy simple.

Primero hize un modelo CurrencyService que se conecta con el sitio web del que obtuve la información, lo lee como un string y este lo convierte a un Hpricot, después usando la librería Hpricot busca por ID los datos que se necesitan, el controlador simplemente presenta la información en formato XML y listo. Aqui dejo el código, solo que no revelaré la fuente de información ya que no se si es legal.

currency_service.rb
require ‘open-uri’
require ‘hpricot’

class CurrencyService < ActiveRecord::Base
def get_data(id)
html = Hpricot(open("http://www.urlfalso.fake").read)
return (html/id).inner_html
end

def get_xml_content
@currencies = {
{:CURRENCY_EQV => ""},
{:CUR_CODE => "USD", :MEX_EQV => get_data("#FIX_DATO").gsub(/ /,'').chomp},
{:CURRENCY_EQV => ""},
{:CUR_CODE => "EUR", :MEX_EQV => get_data("#EURO_DATO").gsub(/ /,'').chomp},
{:CURRENCY_EQV => ""},
{:CUR_CODE => "YEN", :MEX_EQV => get_data("#YEN_DATO").gsub(/ /,'').chomp},
{:CURRENCY_EQV => ""},
{:CUR_CODE => "CAN", :MEX_EQV => get_data("#LIBRA_DATO").gsub(/ /,'').chomp}
}.to_xml

end

end

curency_service_controller.rb
class CurrencyServiceController < ApplicationController

def index
@currency_service = CurrencyService.new
send_data( @currency_service.get_xml_content, :type => "text/xml",
:filename => "currencies.xml" )
end

end

Asi de simple es…

Fixing problems with MusicBrainz on Amarok( Fingerprinting of .mp3 files is not supported )

So, I’ve been using Amarok for a little while and I found this MusicBrainz tag filler feature, when I tried to use it the damn thing told me this:

:Tunepimp (MusicBrainz tagging library ) returned the following error: “Fingerprinting of .mp3 files is not supported.”

Well the way to fix this is by installing the missing library, wich the message is not refering, but I’ll give you the name: libtunepimp5-mp3. So if you are running Ubuntu simply do:
$ sudo apt-get install libtunepimp5-mp3
And that should leave your MusicBrainz tag fetcher completely functional, just restart Amarok after installing the library.
Enjoy.

Problemas con MusicBrainz en Amarok( Fingerprinting of .mp3 files is not supported )

Llevo algun tiempo usando Amarok en mi Linux Ubuntu para escuchar y administrar mi música. Vi que tiene como “feature” llenar los “tags” de tu archivo por medio de MusicBrainz, sin embargo me presento este molesto error cuando intete usar dicha opción:

Tunepimp (MusicBrainz tagging library ) returned the following error:
“Fingerprinting of .mp3 files is not supported.”

La causa de este error es la falta de la librería libtunepimp5-mp3, así que si usas Ubuntu simplemente corre:

$ sudo apt-get install libtunepimp5-mp3

Reinicia tu Amarok y listo, con esto debe quedar funcional.