Неинициализированная константа 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 ]

0 голосов
/ 21 сентября 2011

Я публикую свое решение для других душ, лишенных сна:

Если вы используете RVM, дважды проверьте, что вы находитесь в правильной папке, используя правильную версию ruby ​​и набор гемов. У меня был открыт массив вкладок терминала, и одна из них была в другом каталоге. ввод "rails console" приводил к ошибке, потому что мой дистрибутив rails по умолчанию - 2.3.x.

Я заметил ошибку с моей стороны, cd'd в правильный каталог, и мой файл .rvmrc сделал все остальное.

RVM не , как Git. В git смена веток в одной оболочке изменяет это везде Это буквально переписывает файлы, о которых идет речь. RVM, с другой стороны, просто устанавливает переменные оболочки и должен быть установлен для каждой новой оболочки, которую вы открываете.

В случае, если вы не знакомы с .rvmrc, вы можете поместить файл с таким именем в любой каталог, и rvm подберет его и использует указанную в нем версию / gemset всякий раз, когда вы переходите в этот каталог. Вот пример файла .rvmrc:

rvm use 1.9.2@turtles

Это переключится на последнюю версию ruby ​​1.9.2 в вашей коллекции RVM, используя набор "черепах" из набора гемов. Теперь вы можете открыть сотню вкладок в Терминале (как я в итоге) и не беспокоиться о версии ruby, на которую она указывает.

...