Когда я хочу создать проект 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
Что пошло не так? Как мне это исправить?
ruby-on-rails
rubygems
compatibility
Сокмеса Хиев
источник
источник
gem --version
?Ответы:
Это несовместимость между Rails 2.3.8 и последними версиями RubyGems. Обновление до последней версии 2.3 (2.3.11 на сегодняшний день).
источник
В случае, если вы не можете перейти на Ruby on Rails 2.3.11 (и расширить ответ Дугласра),
thread
необходимо указать в верхней частиboot.rb
. Например:источник
boot.rb
.<RUBYDIR>/lib/ruby/gems/<VERSION>/gems/rails-<VERSION>/environments/boot.rb
Я смог это исправить, понизив RubyGems до 1.5.3, поскольку это происходит с RubyGems 1.6.0+ и Rails <2.3.11:
Если вы ранее перешли на более раннюю версию и хотите обновить ее до 1.5.3, вы можете получить следующее при попытке запустить ее:
Если вы получили эту ошибку, обновите ее, чтобы она позволила вам указать версию, а затем снова понизьте версию:
источник
undefined local variable or method version_requirements for #<Rails::GemDependency:0x2b001603fe30>
Вероятно, вы также можете обойти эту проблему, потребовав в приложении «нить»:
Согласно примечаниям к выпуску RubyGems 1.6.0 .
источник
Если вы хотите сохранить свою версию такой же, как rails будет 2.3.8, а версия gem будет последней. Вы можете использовать это решение Последний гем с Rails2.x . в этом некоторые изменения в файле boot.rb и файле environment.rb.
require 'thread
'в файле boot.rb вверху.и в файле environment.rb добавьте следующий код над блоком инициализатора.
источник
Я сталкивался с этой проблемой во многих случаях, когда пытался запустить старый проект rails 2.3.5 после работы с rails 3>. В моем случае, чтобы решить проблему, я должен сделать обновление rubygems до версии 1.4.2, это:
источник
Если вы используете Radiant CMS, просто добавьте
к вершине
config/boot.rb
.(Престижность ответов Аарона и Натанвды.)
источник
Как уже упоминалось, это происходит при использовании 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 решило проблему.
источник
Попробуйте обновить версию Ruby on Rails до версии 3.0.5:
или v2.3.11:
Если это не новый проект, вам необходимо соответствующим образом обновить приложение. Если это был новый проект, просто удалите каталог, в котором вы его создали, и снова создайте новый проект.
источник
обновить рубины
обновление gem --system
источник
Я публикую свое решение для других душ, лишенных сна:
Если вы используете RVM, дважды проверьте, что вы находитесь в правильной папке, используя правильную версию ruby и набор гемов. У меня был открыт массив вкладок терминала, и одна из них была в другом каталоге. набрав "rails console", я получил ошибку, потому что мой дистрибутив rails по умолчанию - 2.3.x.
Я заметил ошибку с моей стороны, cd'd в правильный каталог, и мой файл .rvmrc сделал все остальное.
RVM не похож на Git. В git смена веток в одной оболочке повсюду. Это буквально переписывает файлы, о которых идет речь. RVM, с другой стороны, просто устанавливает переменные оболочки и должен быть установлен для каждой новой оболочки, которую вы открываете.
Если вы не знакомы с .rvmrc, вы можете поместить файл с таким именем в любой каталог, и rvm подберет его и будет использовать указанную в нем версию / gemset при каждом переходе в этот каталог. Вот пример файла .rvmrc:
Это переключится на последнюю версию ruby 1.9.2 в вашей коллекции RVM, используя набор «черепах». Теперь вы можете открыть сотню вкладок в терминале (как я в итоге) и не беспокоиться о версии ruby, на которую он указывает.
источник