ruby-on-rails - software - ruby rails github
Constante sin inicializar ActiveSupport:: Dependencies:: Mutex(NameError) (11)
Como se mencionó, esto ocurre cuando se utiliza RubyGems 1.6.0 con la versión de Ruby on Rails anterior a la versión 3. Mi aplicación está utilizando Ruby on Rails 2.3.3 en el proveedor del proyecto.
Sin duda, una actualización de Ruby on Rails a una versión más reciente de 2.3.X también puede solucionar este problema. Sin embargo, este problema le impide ejecutar Rake para convertir al Ruby on Rails y actualizarlo.
Agregar "hilo" a la parte superior de environment.rb no solucionó el problema. La adición de "hilo" a /vendor/rails/activesupport/lib/active_support.rb solucionó el problema.
Cuando quiero crear un proyecto de Ruby on Rails, recibo el mensaje a continuación.
/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 puedo solucionarlo?
En caso de que no pueda actualizar a Ruby on Rails 2.3.11 (y para ampliar la respuesta de douglasr), se debe solicitar un thread
en la parte superior de boot.rb
Por ejemplo:
require ''thread''
# Don''t change this file!
# Configure your app in config/environment.rb and config/environments/*.rb
...
Esta es una incompatibilidad entre Rails 2.3.8 y versiones recientes de RubyGems. Actualice a la última versión 2.3 (2.3.11 a partir de hoy).
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 de ruby y el gemset correctos. Tenía una serie de pestañas de terminal abiertas, y una de ellas estaba en un directorio diferente. al escribir "consola de rieles" se produjo el error porque mi distribución de rieles predeterminada es 2.3.x.
Noté el error de mi parte, cd''d al directorio correcto, y mi archivo .rvmrc hizo el resto.
RVM no es como Git. En git, cambiar las ramas en una concha lo cambia en todas partes. Está literalmente reescribiendo los archivos en cuestión. RVM, por otro lado, solo está configurando las variables de shell, y debe configurarse para cada shell nuevo que abra.
En caso de que no esté familiarizado con .rvmrc, puede poner un archivo con ese nombre en cualquier directorio, y rvm lo recogerá y usará la versión / gemset que se especifica allí, siempre que cambie a ese directorio. Aquí hay un ejemplo de archivo .rvmrc:
rvm use 1.9.2@turtles
Esto cambiará a la última versión de ruby 1.9.2 en tu colección de RVM, usando las "tortugas" gemset. Ahora puedes abrir cien pestañas en Terminal (como acabo de hacer) y nunca te preocupes por la versión de rubí a la que apunta.
Intente actualizar su versión de Ruby on Rails a v3.0.5:
gem install rails --version 3.0.5
o v2.3.11:
gem install rails --version 2.3.11
Si este no es un proyecto nuevo, deberá actualizar su aplicación en consecuencia. Si era un proyecto nuevo, simplemente elimine el directorio en el que lo creó y vuelva a crear un nuevo proyecto.
Me he enfrentado a este problema en muchas ocasiones cuando trato de iniciar un antiguo proyecto de rieles 2.3.5 después de haber trabajado con rieles 3>. En mi caso para resolver el problema, debo hacer una actualización de rubygems a la versión 1.4.2, esto es:
sudo gem update --system 1.4.2
Pude arreglar esto al rebajar RubyGems a 1.5.3, ya que sucede con RubyGems 1.6.0+ y Rails <2.3.11:
gem update --system 1.5.3
Si anteriormente había bajado a una versión anterior y desea actualizar a 1.5.3, puede obtener lo siguiente cuando intente ejecutar eso:
Updating RubyGems
ERROR: While executing gem ... (RuntimeError)
No gem names are allowed with the --system option
Si recibe ese error, actualícelo para que le permita especificar la versión y luego vuelva a bajar de categoría:
gem update --system
gem update --system 1.5.3
Si desea mantener su versión igual, los rieles serán 2.3.8 y la versión gema será la más reciente. Puede utilizar esta última solución 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 de inicialización.
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new(''1.3.7'')
module Rails
class GemDependency
def requirement
r = super
(r == Gem::Requirement.default) ? nil : r
end
end
end
end
Si está utilizando Radiant CMS, simplemente agregue
require ''thread''
a la parte superior de config/boot.rb
(Felicitaciones a las respuestas de Aaron y nathanvda.)
También es probable que pueda solucionar este problema al requerir un "hilo" en su aplicación como tal:
require ''thread''
Según las notas de lanzamiento de RubyGems 1.6.0.
actualizar los rubygems
actualización de gemas --sistema