Constantes no inicializadas ActiveSupport:: Dependencies:: Mutex (NameError)


Cuando quiero crear un proyecto de 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 puedo arreglarlo?

Author: Peter Mortensen, 2011-03-03

11 answers

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).

 137
Author: John,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-03 04:57:02

En caso de que no pueda actualizar a Ruby on Rails 2.3.11 (y para ampliar la respuesta de douglasr), thread debe ser requerido 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
...
 211
Author: Aaron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-13 21:29:53

Pude arreglar esto degradando RubyGems a 1.5.3, ya que sucede con RubyGems 1.6.0+ y Rails

gem update --system 1.5.3

Si previamente ha bajado a una versión incluso anterior y desea actualizar a 1.5.3, puede obtener lo siguiente al intentar ejecutarlo:

Updating RubyGems
ERROR:  While executing gem ... (RuntimeError)
    No gem names are allowed with the --system option

Si obtiene ese error, actualice, de modo que le permita especificar la versión, y luego vuelva a degradar:

gem update --system
gem update --system 1.5.3
 158
Author: Gary S. Weaver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-15 14:11:59

También es probable que pueda evitar este problema al requerir 'hilo' en su aplicación como tal:

require 'thread'

Según las notas de la versión de RubyGems 1.6.0 .

 35
Author: douglasr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-03 06:02:12

Si desea mantener su versión igual que rails será 2.3.8 y la versión de gem será la última. Puede utilizar esta solución Última gema con Rails2.x . en esto algunos cambios en el arranque.archivo rb y entorno.archivo rb.

require 'thread' en la bota.archivo rb en la parte superior.

Y en el medio ambiente.archivo rb agregue el siguiente código encima del bloque inicializador.

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
 24
Author: arunagw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-18 21:19:39

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:

sudo gem update --system 1.4.2
 11
Author: Tania R,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-10 15:00:04

Si está utilizando Radiant CMS, simplemente agregue

require 'thread'

Al principio de config/boot.rb.

(Felicitaciones a las respuestas de Aarón y natanavda.)

 6
Author: thekingoftruth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-28 06:51:24

Como se mencionó, esto ocurre cuando se usa RubyGems 1.6.0 con Ruby on Rails versión anterior a la versión 3. Mi aplicación está utilizando Ruby on Rails 2.3.3 vendored en el / vendor del proyecto.

Sin duda una actualización de Ruby on Rails a una versión 2.3 más reciente.La versión X también puede solucionar este problema. Sin embargo, este problema le impide ejecutar Rake a unvendor Ruby on Rails y actualizarlo.

Añadiendo require 'thread' a la parte superior del entorno.rb no solucionó el problema para mí. Añadir require 'thread' a / vendor/rails/activesupport/lib / active_support.rb arregló el problema.

 3
Author: Paul Grayson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-22 19:32:31

Intenta actualizar tu versión de Ruby on Rails a la 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, tendrá que actualizar su aplicación en consecuencia. Si se trataba de un proyecto nuevo, simplemente elimine el directorio en el que lo creó y vuelva a crear un proyecto nuevo.

 3
Author: Andrew Marshall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-24 12:51:09

Actualizar los rubygems

Gem update system system

 1
Author: Vishnu Atrai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-05 15:01:38

Estoy publicando mi solución para las otras almas privadas de sueño por ahí:

Si está utilizando RVM, compruebe que está en la carpeta correcta, utilizando 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 rails" produjo el error porque mi distro rails por defecto es 2.3.x.

Noté el error de mi parte, cd'd al directorio correcto, y mi .el archivo rvmrc hizo el resto.

RVM es no como Git. En git, cambiar ramas en un shell lo cambia en todas partes. Está literalmente reescribiendo los archivos en cuestión. RVM, por otro lado, solo está configurando 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/conjunto de gemas especificadas en él, cada vez que cambie a ese directorio. Aquí hay una muestra .rvmrc archivo:

rvm use 1.9.2@turtles

Esto cambiará a la última versión de ruby 1.9.2 en su colección RVM, utilizando el conjunto de gemas "tortugas". Ahora puedes abrir un centenar de pestañas en Terminal (como acabo de hacer) y nunca te preocupes por la versión de ruby a la que apunta.

 -1
Author: Jaime Bellmyer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-21 19:50:40