Грабли прерваны! уровень стека слишком глубокий
Возможный дубликат:
Rails 3.0 и Ruby 1.9.2rc: команды Rake возвращают "уже инициализированную константу" и слишком много ошибок на уровне стека. Есть идеи
Я использую Ruby версии 1.9.1 на Windows Vista. Получаю ошибку rake aborted для любых команд rake, которые я использую. Это происходит не во всех папках моего приложения. Это происходит только в определенной папке приложения.
C:\rails_project\stunetwork>rake db:reset
(in C:/rails_project/stunetwork)
rake aborted!
stack level too deep
C:/Ruby191/lib/ruby/gems/1.9.1/gems/rake-0.8.7/lib/rake.rb:2383:in `raw_load_rak
efile'
(See full trace by running task with --trace)
6 ответов
Попробуйте поместить bundle exec перед командой rake.
bundle exec rake -T
Вам нужно обновить свой драгоценный камень. Я встретил эту ошибку с gem '1.8.10' и исправил, обновившись до 1.8.16
gem update --system
У меня была только эта проблема с ruby-1.9.2-p180 через rvm.
Переход на ruby-1.9.2-p0 устранил проблему. попробуйте "rvm use 1.9.2-p0"
Я только что столкнулся с этим точным сообщением об ошибке в Ubuntu, и смог решить его путем понижения rubygems с 1.8.3 до 1.7.1.
Есть хороший пост Иегуды Каца, который объясняет, почему без bundle exec
могут быть конфликты версий: http://yehudakatz.com/2011/05/30/gem-versioning-and-bundler-doing-it-right/
Существует также bundle install --binstubs
команда, которая позволяет безопасно запускать версии rake db:reset
как это: bin/rake db:reset
,
Стек вызовов может зависеть от того, какие гемы вы устанавливаете (некоторые gems monkeypatch задачи rails), что объясняет, почему вы столкнетесь с этим в конкретном приложении, а не в других.
В системе Unix вы можете попробовать использовать команду ulimit для увеличения размера вашего стека. На стороне окна я еще не нашел решение.
В зависимости от того, какую версию ruby вы используете в Windows, вы можете спросить сопровождающих, как увеличить стек.
Для установки ruby вам потребуется установить среду компиляции mingw, клонировать репозиторий github и перекомпилировать используемый вами ruby (не очень сексуально, я признаю).