Cuando quiero crear un proyecto Ruby on Rails, recibo el siguiente mensaje.
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:55: uninitialized constant ActiveSupport::Dependencies::Mutex (NameError)
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support.rb:57
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/rails_generator.rb:31
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.8/bin/rails:15
from /usr/bin/rails:19:in `load'
from /usr/bin/rails:19
¿Qué ha salido mal? ¿Cómo lo soluciono?
ruby-on-rails
rubygems
compatibility
Sokmesa Khiev
fuente
fuente
gem --version
?Respuestas:
Esta es una incompatibilidad entre Rails 2.3.8 y las versiones recientes de RubyGems. Actualice a la última versión 2.3 (2.3.11 a partir de hoy).
fuente
En caso de que no pueda actualizar a Ruby on Rails 2.3.11 (y ampliar la respuesta de douglasr),
thread
debe ser requerido en la parte superior deboot.rb
. Por ejemplo:fuente
boot.rb
sí mismo.<RUBYDIR>/lib/ruby/gems/<VERSION>/gems/rails-<VERSION>/environments/boot.rb
Pude solucionar esto al degradar RubyGems a 1.5.3, ya que sucede con RubyGems 1.6.0+ y Rails <2.3.11:
Si anteriormente había bajado a una versión anterior y desea actualizar a 1.5.3, puede obtener lo siguiente al intentar ejecutar eso:
Si obtiene ese error, actualícelo, de modo que le permita especificar la versión, y luego volver a degradarlo:
fuente
undefined local variable or method version_requirements for #<Rails::GemDependency:0x2b001603fe30>
También es probable que pueda solucionar este problema requiriendo 'hilo' en su aplicación como tal:
Según las notas de la versión de RubyGems 1.6.0 .
fuente
Si desea mantener su versión igual que los rieles será 2.3.8 y la versión de gemas será la última. Puede usar esta solución La última gema con Rails2.x . en esto algunos cambios en el archivo boot.rb y el archivo environment.rb.
require 'thread
'en el archivo boot.rb en la parte superior.y en el archivo environment.rb agregue el siguiente código sobre el bloque inicializador.
fuente
Me he enfrentado a este problema en muchas ocasiones cuando intento iniciar un proyecto antiguo de rails 2.3.5 después de haber trabajado con rails 3>. En mi caso para resolver el problema, debo hacer una actualización de rubygems a la versión 1.4.2, esto es:
fuente
Si está utilizando Radiant CMS, simplemente agregue
a la cima de
config/boot.rb
.(Felicitaciones a las respuestas de Aaron y Nathanvda.)
fuente
Como se mencionó, esto ocurre cuando uso RubyGems 1.6.0 con Ruby on Rails versión anterior a la versión 3. Mi aplicación está usando Ruby on Rails 2.3.3 distribuido al / proveedor del proyecto.
Sin duda, una actualización de Ruby on Rails a una nueva versión 2.3.X también puede solucionar este problema. Sin embargo, este problema le impide ejecutar Rake para desvelar Ruby on Rails y actualizarlo.
Agregar require 'thread' a la parte superior de environment.rb no me solucionó el problema. Agregar require 'thread' a /vendor/rails/activesupport/lib/active_support.rb solucionó el problema.
fuente
Intente actualizar su versión de Ruby on Rails a v3.0.5:
o v2.3.11:
Si este no es un proyecto nuevo, deberá actualizar su aplicación en consecuencia. Si se trataba de un nuevo proyecto, simplemente elimine el directorio en el que lo creó y cree un nuevo proyecto nuevamente.
fuente
actualizar los rubygems
actualización de gemas - sistema
fuente
Estoy publicando mi solución para las otras almas privadas de sueño:
Si está usando RVM, verifique que esté en la carpeta correcta, usando la versión y el conjunto de gemas de ruby correctos. Tenía una serie de pestañas de terminal abiertas, y una de ellas estaba en un directorio diferente. escribir "consola de rails" produjo el error porque mi distribución predeterminada de rails es 2.3.x.
Noté el error de mi parte, lo hice en el directorio correcto y mi archivo .rvmrc hizo el resto.
RVM no es como Git. En git, cambiar ramas en un caparazón lo cambia en todas partes. Literalmente está reescribiendo los archivos en cuestión. RVM, por otro lado, solo está configurando variables de shell, y debe configurarse para cada nuevo shell que abra.
En caso de que no esté familiarizado con .rvmrc, puede colocar un archivo con ese nombre en cualquier directorio, y rvm lo recogerá y usará la versión / conjunto de gemas especificado allí, siempre que cambie a ese directorio. Aquí hay un archivo de muestra .rvmrc:
Esto cambiará a la última versión de ruby 1.9.2 en su colección RVM, utilizando las "tortugas" de gemas. Ahora puede abrir un centenar de pestañas en la Terminal (como termino haciendo) y nunca preocuparse por la versión rubí a la que apunta.
fuente