undefined method `version’ for nil:NilClass — Cómo actualizar rubygems 1.5.0 a 1.5.2

Si tienes instalado rubygems 1.5.0 o 1.5.1 y tratas de actualizarlo con el comando de siempre, te encontrarás con esto:

  1. $ gem update --system
  2. Updating RubyGems
  3. ERROR:  While executing gem ... (NoMethodError)
  4.     undefined method `version' for nil:NilClass

Para arreglarlo es necesario instalar la gema rubygems-update.
Teclea lo siguiente en tu terminal:

  1. gem install rubygems-update
  2. update_rubygems

Y verás algo como esto:

  1. $ update_rubygems
  2. RubyGems 1.5.2 installed
  3.  
  4. === 1.5.2 / 2011-02-10
  5.  
  6. NOTE:  RubyGems 1.5.0 and 1.5.1 have a broken <tt>gem update --system</tt>.
  7.  
  8. To upgrade you'll need to use the manual upgrade recipe.  Using sudo/su as
  9. appropriate:
  10.  
  11.   $ gem install rubygems-update
  12.   $ update_rubygems
  13.  
  14. Bug Fixes:
  15.  
  16. * Fixed <tt>gem update --system</tt>.
  17.   RubyGems can now update itself again.

Ahora ya puedes actualizar de nuevo tu rubygems con:

  1. gem update --system

ERROR: While executing gem … (ArgumentError) undefined class/module YAML::PrivateType

Si al tratar de instalar una gema te sale el error mostrado a continuación, seguramente es porque el autor hizo un lanzamiento con rubygems 1.5.0.

  1. $ rake install
  2. (in /home/oewolf/development/gamedev/github/missile-command-ruby)
  3.   Successfully built RubyGem
  4.   Name: missile-command-ruby
  5.   Version: 0.0.6
  6.   File: missile-command-ruby-0.0.6.gem
  7. Executing "ruby -S gem install ./pkg/missile-command-ruby-0.0.6.gem":
  8. ruby -S gem install ./pkg/missile-command-ruby-0.0.6.gem
  9. ERROR:  While executing gem ... (ArgumentError)
  10.     undefined class/module YAML::PrivateType
  11. rake aborted!
  12. Command failed with status (1): [ruby -S gem install ./pkg/missile-command-...]

Entonces, lo indicado aquí es hacer un relanzamiento de la gema, una vez que hayamos actualizado a rubygems 1.5.2 o superior.

Depredado en

undefined method ‘version’ for nil:nilclass ??? hmmm…

Coach outlet

Missing host to link to! Please provide :host parameter or set default_url_options[:host]

Al estar desarrollando una aplicación web con Rails 3 y Devise, me apareció el siguiente error al estar jugando con la característica lockable:

ActionView::Template::Error (Missing host to link to! Please provide :host parameter or set default_url_options[:host])

Investigando un poco me topé con que la solución consistía en hacer caso a la indicación que aparece en el README de Devise. Je.

Necesitamos configurar en cada ambiente (development, production, etc.) las URLs que se emplearán en el envío de correos electrónicos:

Aquí está la configuración para config/environments/development.rb:

config.action_mailer.default_url_options = { :host => 'localhost:3000' }

Y aquí una de ejemplo para config/environments/production.rb:

config.action_mailer.default_url_options = { :host => 'lobotuerto.com' }