El repositorio de Rubygems no va precisamente fino últimamente:se come por completo la memoria de tu servidor. Tras el fin de semana intentando instalar Rails en Slicehost, esto es todo lo que he conseguido junto a varias alertas de Swap Usage:
Bulk updating Gem source index for: http://gems.rubyforge.org/
La "amable" respuesta del equipo de soporte de slicehost: "mira en el foro", algo que había hecho a conciencia sin que ninguna de las propuestas funcionara. (Borrar source_cache, matar procesos zombies... etc.).
Manuel me recomendó que para situaciones hiciera la instalación local descargando las gemas directamente en el servidor.
Créate una carpeta "sources", y dentro de ella descarga con wget cada una de las gemas por el orden que aparece en la lista. La descarga directa es mucho más rápida. Por ejemplo:
Una vez las tengas todas, ejecuta el comando gem con el parámetro -l, que quiere decir que se instalará sin acudir al repositorio de gemas.
gem install -l
Una vez instalado Rails, aparentemente las gemas causantes de este cuelgue, pude instalar las gemas de mongrel y mongrel_cluster y probar gem update con toda normalidad.
Si una vez instalado Rails al arrancar el servidor te muestra un error openssl (RuntimeError) como en el ejemplo:
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails 2.1.0 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
Exiting
/usr/local/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/initializer.rb:225:in
`require_frameworks': no such file to load -- openssl (RuntimeError)
Una de las soluciones posibles es instalar (o reinstalar) libopenssl-ruby con el comando siguiente.
Al crear una aplicación con Rails 2.0.2, te encontrarás que, por defecto, la base de datos es SQLite3. ¿Razón? Sencillez, según el equipo responsable de Rails.
Si estás acostumbrado a trabajar con MySQL, mediante el parámetro "-d mysql", puedes saltarte la versión por defecto tomar como base de datos MySQL.
Es un problema típico: en tu máquina tienes en acceso a Ruby en una ubicación, por ejemplo en "/usr/local/bin/ruby" y en tu entorno de desarrollo en "/usr/local/bin/ruby".
Esta información es necesaria en la primera línea de los scripts o shebang, que es aquella que llamará a los ejecutables de Ruby.
¿Qué significa esto? Que para ejecutar scripts en Ruby deberías cambiar la primera línea de tus scripts para acomodarlo al entorno en el que vaya a funcionar la aplicación.
Solución
Mediante el parámetro "--ruby /ruta/a/ruby" puedes generar las aplicaciones con el shebang que introduzcas en el parámetro. En este caso, tras averiguar la ruta hacia Ruby el servidor de producción:
puedes predeterminar el shebang de una aplicación para que cuadre con la ruta en producción, mediante el parámetro --ruby
El shebang resultante sería:
Si el enlace a tu máquina de desarrollo no tiene acceso a Ruby en esa ubicación, puedes, mediante un enlace simbólico (symlink) crear un vínculo entre las rutas de tu entorno de desarrollo y la que has definido para producción en el paso anterior. De esta manera, la aplicación funcionaría en ambos entornos sin tener que tocar el shebang.
# Enlazar la ubicación de Ruby en desarrollo con un symlink
local$ sudo ln -s /opt/local/bin/ruby /usr/local/bin/ruby
local$ sudo ln -s /opt/local/bin/ruby /usr/bin/ruby
Fuente: Deploying Rails Applications. A step by step guide. Ezra Zygmuntowicz
El equipo de Jesper Rønn-Jensen, lleva trabajando con Rails como herramienta de prototipado desde hace tiempo para grandes clientes de Capgemini Dinamarca. Jesper es un participante activo en la Comunidad Rails internacional, desarrollando plugins, asistiendo a Conferencias. Ha hecho varias presentaciones explicando los beneficios de Rails para prototipar , como en reboot8.
El caso es que ya es oficial: Capgemini Dinamarca usa Ruby On Rails como herramienta de prototipado y en algunos casos en producción.
Razones: mayor productividad, menor coste y mejoras notables en la calidad del producto final. Tal y como lo cuentan parece ser la piedra filosofal del software.
We have had working prototypes up and running in a matter of hours. A specific example was a project we decided to implement in Ruby on Rails. Originally the project was estimated at 400 hours in Microsoft .Net. With Ruby on Rails we could deliver it in 110 hours.
-- Jesper Rønn-Jensen
Como hicieran ya Jeff Bezos o Marc Andreessen pioneros de la web que conocemos hoy en día, David Heinemeier Hanson ha dado su charla en la Startup School. Aquí el video.
Has creado tu aplicación mediante el comando Rails (rails miapp --database=mysql). Es importante que especifiques el tipo de base de datos que quieres emplear, ya que en caso contrario, por defecto puede tomar SQLite.
Has creado la base de datos de desarrollo: con el comando mysqladmin -u root miapp_development.
Has configurado el archivo config/database.yml para conectar con la base de datos de desarrollo.
Para comprobar que todo funciona correctamente, acude al shell e introduce el comando:
rake db:migrate
Si el sistema muestra el siguiente mensaje de error:
/usr/local/bin/rake:17: undefined method `require_gem' for main:Object (NoMethodError)
Es porque la versión de rake en nuestro sistema está desactualizada. Para actualizarla, y desde el shell, debemos introducir el siguiente comando.
sudo gem install --remote rake
Vuelve a introducir rake db:migrate y el mensaje de error habrá desaparecido.
Si quieres comenzar o continuar con tu proceso de autoaprendizaje sobre programación con Ruby On Rails estás de suerte: la Comunidad Rails genera los mejores contenidos didacticos para aprender a programar.
Imprescindibles:
Peepcode: es de pago. Por el precio de una comida -9$-, tienes un videocast con su documentación y código. Peepcode es imprescindible para aprender sobre tópicos avanzados.
Railscasts: Más de 80 videocasts introductorios sobre todos los temas que puedes necesitar para programar una aplicación con Ruby On Rails.
RubyPlus: de reciente lanzamiento y también gratuito. Su diferencia: no sólo se dedica a Rails, sino que comienza con videocasts de Ruby, algo que ayuda a comprender mejor cómo funciona todo este tinglado.
Como Sísifo, héroe absurdo, fui condenado la ceguera y a empujar una gran roca hasta la cima de la montaña. Una vez arriba, un segundo de felicidad para sentir como la piedra se despeña. Y así una y otra vez. Para siempre...