Неинициализированная константа ActiveSupport :: Dependencies :: Mutex (NameError) - PullRequest
237 голосов
/ 03 марта 2011

Когда я хочу создать проект Ruby on Rails, я получаю сообщение ниже.

/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

Что пошло не так?Как мне это исправить?

Ответы [ 11 ]

211 голосов
/ 24 марта 2011

Если вы не можете перейти на Ruby on Rails 2.3.11 (и расширить ответ Дугласра), необходимо указать thread в верхней части boot.rb.Например:

require 'thread'

# Don't change this file!
# Configure your app in config/environment.rb and config/environments/*.rb
...
158 голосов
/ 05 апреля 2011

Мне удалось это исправить, понизив RubyGems до 1.5.3, поскольку это происходит с RubyGems 1.6.0+ и Rails <2.3.11: </p>

gem update --system 1.5.3

Если вы ранее понизили версию до более ранней и хотите обновить ее до 1.5.3, вы можете получить следующее при попытке ее запустить:

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

Если вы получили эту ошибку, обновите ее, чтобы она позволила вам указать версию, а затем снова понизьте версию:

gem update --system
gem update --system 1.5.3
137 голосов
/ 03 марта 2011

Это несовместимость между Rails 2.3.8 и последними версиями RubyGems.Обновление до последней версии 2.3 (2.3.11 на сегодняшний день).

35 голосов
/ 03 марта 2011

Вероятно, вы также можете обойти эту проблему, потребовав в своем приложении «нить»:

require 'thread'

Согласно примечаниям к выпуску RubyGems 1.6.0 .

24 голосов
/ 24 марта 2011

Если вы хотите сохранить свою версию такой же, как rails будет 2.3.8, и версия gem будет последней. Вы можете использовать это решение Последний гем с Rails2.x . в этом некоторые изменения в файле boot.rb и файле environment.rb.

require 'thread 'в файле boot.rb вверху.

и в файле environment.rb добавьте следующий код над блоком инициализатора.

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
11 голосов
/ 10 ноября 2011

Я сталкивался с этой проблемой во многих случаях, когда пытался запустить старый проект rails 2.3.5 после работы с rails 3>. В моем случае, чтобы решить проблему, я должен сделать обновление rubygems до версии 1.4.2, это:

sudo gem update --system 1.4.2
6 голосов
/ 28 июня 2011

Если вы используете Radiant CMS, просто добавьте

require 'thread'

в начало config/boot.rb.

(Престижность ответов Аарона и Натанвды.)

3 голосов
/ 17 марта 2011

Как уже упоминалось, это происходит при использовании RubyGems 1.6.0 с версией Ruby on Rails, предшествующей версии 3. Мое приложение использует Ruby on Rails 2.3.3, поставляемый в / vendor проекта.

Без сомнения, обновление Ruby on Rails до более новой версии 2.3.X также может решить эту проблему. Однако эта проблема не позволяет запустить Rake , чтобы отключить Ruby on Rails и обновить его.

Добавление require 'thread' в начало environment.rb не решило проблему для меня. Добавление require 'thread' в /vendor/rails/activesupport/lib/active_support.rb решило проблему.

3 голосов
/ 03 марта 2011

Попробуйте обновить версию Ruby on Rails до версии 3.0.5:

gem install rails --version 3.0.5

или v2.3.11:

gem install rails --version 2.3.11

Если это не новый проект, вам придется соответствующим образом обновить приложение. Если это был новый проект, просто удалите каталог, в котором вы его создали, и снова создайте новый проект.

1 голос
/ 05 сентября 2012

обновить рубины

gem update --system

...