2011-05-19 15 views
12

Tengo un problema al obtener una aplicación antigua de Ruby on Rails 2 que no ha funcionado en un año para funcionar.Método no definido `name 'para" SystemTimer ": String

Estoy tratando de ejecutar rake test:functionals en la raíz del directorio de mi proyecto, pero estoy obteniendo undefined method 'name' for "SystemTimer":String.

he pegado todo lo que creo relevante para el problema aquí: http://pastebin.com/NgBvystZ

Además, cuando corro rastrillo en sí, consigo Errors running test:units! No estoy seguro de cómo depurar eso.

He copiado y pegado todo lo que creo que sería útil para comprender este problema. Su tiempo es muy apreciado. Gracias.

+0

¿Tiene la gema [SystemTimer] (http://systemtimer.rubyforge.org/) en su Gemfile? – monocle

+0

Otro signo: método indefinido 'name 'para" bundler ": String – rogerdpack

Respuesta

54

Esto es una incompatibilidad entre versiones de RubyGems mayores que 1.3.7 y versiones de Rails inferiores a 2.3.12. Hay algunas formas de resolver esto.

  1. Uso Bündler

    Bündler es easy to install, soluciona este problema, y ​​tiene un número de otras ventajas también. Lo recomiendo altamente.

  2. de actualización a Rails 2.3.12 o superior

    rieles 2.3.12 problemas de compatibilidad con RubyGems fijos (véase 1.8.5 release report).

  3. Downgrade a RubyGems 1.3.7

    no me recomienda esto a menos que no tienen otra opción. Use este comando: gem update --system 1.3.7. Además, la versión 1.7.2 tiene compatibilidad parcial (se ejecutará, pero las gemas de congelación fallarán y es probable que haya otros problemas).

+2

Tienes razón. Esta fue la solución. Tenía que encontrar los paquetes adecuados para usar con ruby, ya que los desarrolladores de RoR no son entusiastas de la compatibilidad con versiones anteriores en ningún sentido de la palabra. Logré encontrar una lista anterior de paquetes con los números de versión y eso me salvó. – sneilan

+1

+1 No puedo votar esta publicación lo suficiente. ¡Gracias! –

+1

La adición de Bundler a un proyecto de Rails 2 es muy fácil y resuelve este problema. Si no está utilizando rvm y tiene varios sitios en el mismo servidor, haga lo siguiente: 'bundle install --path vendor/bundle' para obtener una copia aislada de sus gemas. – Kris

4

Yo probé suerte en este hilo, porque tengo el siguiente error al migrar algunas 0.9.1 instalaciones radiantes a un nuevo servidor:

undefined method `name' for "RedCloth":String 

(3) La solución comprometedora: Me refugio "Probé esto personalmente, pero escuché que Rails 2.3 con bundler es compatible con los últimos rubygems. Si está interesado en esta solución, consulte http://gembundler.com/rails23.html para obtener el paquete para que funcione bajo los rieles 2.3.

Para mí la solución 3 era la única opción, ya que teníamos otras aplicaciones que necesitan las últimas rubygems en el sistema. Sólo tiene que instalar bundler y siga los pasos thes en esta página: http://gembundler.com/rails23.html

Y poner esto en un archivo llamado "Gemfile" en la raíz de aplicaciones:

source :gemcutter 
gem "radiant", "0.9.1" 
gem "sanitize" 
gem "fastercsv" 
gem "rmagick" 
gem "rack", "~> 1.1.0" 
gem "rake", ">= 0.8.3" 
gem "RedCloth", ">= 4.0.0" 
gem "will_paginate", "~> 2.3.11" 
gem "mysql" 

Esto es sólo mi ejemplo. Comience con solo las primeras 2 líneas, ejecute bundle update y vuelva a cargar la página para ver qué más puede estar perdiendo.

Gracias Ben!

Cuestiones relacionadas