Rails 3.0 и Ruby 1.9.2rc: команды Rake возвращают «уже инициализированную константу» и слишком много ошибок на уровне стека. Есть идеи - PullRequest
25 голосов
/ 06 июля 2010

Я пытаюсь запустить Rails 3 beta 4 и Ruby 1.9.2rc в Ubuntu 10.04.Первоначально это работало, но после выполнения моей первой установки / пакета пакета я теперь получаю следующие ошибки во всех проектах rails.Даже простой 'rails new testproject', сопровождаемый граблями, выводит сообщения об ошибках.

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

Единственное, что я заметил - что может или не может иметь значение - это то, что каталог в файлах ~ / .bundle - ruby ​​/ 1.9.1,1.9.1 не установлен на моей машине - только 1.9.2rc.ruby -v возвращает 1.9.2

(in /home/john/Websites/sandbox/testerino)
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:32: warning: already initialized constant RAKEVERSION
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake/alt_system.rb:32: warning: already initialized constant WINDOWS
WARNING: Possible conflict with Rake extension: String#ext already exists
WARNING: Possible conflict with Rake extension: String#pathmap already exists
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:404: warning: already initialized constant EMPTY_TASK_ARGS
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:452: warning: already initialized constant EMPTY
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:960: warning: already initialized constant RUBY_EXT
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:964: warning: already initialized constant RUBY
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1033: warning: already initialized constant LN_SUPPORTED
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1242: warning: already initialized constant ARRAY_METHODS
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1245: warning: already initialized constant MUST_DEFINE
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1249: warning: already initialized constant MUST_NOT_DEFINE
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1253: warning: already initialized constant SPECIAL_RETURN
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1259: warning: already initialized constant DELEGATING_METHODS
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1569: warning: already initialized constant DEFAULT_IGNORE_PATTERNS
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1575: warning: already initialized constant DEFAULT_IGNORE_PROCS
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1612: warning: already initialized constant FileList
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1638: warning: already initialized constant EARLY
/home/john/.bundle/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb:1968: warning: already initialized constant DEFAULT_RAKEFILES
rake aborted!
stack level too deep

Ответы [ 13 ]

31 голосов
/ 19 июля 2010

Я тоже сталкивался с этой проблемой.Похоже, это не связано с конкретными версиями rails или ruby, которые вы упоминаете, которые отличаются от тех, которые я использую (Rails 2.3.8, Rake 0.8.7, Ruby 1.9.1p378).Похоже, это связано с тем, что bundler и rake не работают вместе.

Разрешение, которое у меня сработало, упоминается внизу этого билета на маяк .Вот краткая версия:

  • Запустите "bundle exec bash";посмотрите, работает ли rake сейчас - если это так,
  • Убедитесь, что среды bash, до и после, одинаковы, посоветовавшись с командой env и изменив ~ / .bashrc или ~ / .bash_profile соответственно.

Как только вы это сделаете, вы немного испортите упаковщик.На этом этапе вы должны очистить RUBYOPT, чтобы запустить команду связки:

RUBYOPT= bundle install --relock

РЕДАКТИРОВАТЬ:

Подумав об этом немного больше, я неКонечно, это лучший способ решить эту проблему.Вы можете дать совет Хирала Десаи и некоторые другие ответы, прежде чем прибегать к этому подходу, так как он меняет среду.

24 голосов
/ 22 августа 2011

Боюсь, что более простое решение - запустить эту команду вместо rake db: migrate

bundle exec rake db:migrate
4 голосов
/ 30 августа 2011

bundle exec bash у меня работает

4 голосов
/ 06 мая 2011

Согласно предыдущему сообщению от Эрика У. установлена ​​переменная среды RUBYOPT. Если вы хотите выйти из новой оболочки bash, которая открывается с помощью «bundle exec bash», просто скопируйте строку среды RUBYOPT, выйдите из оболочки, а затем введите «export RUBYOPT =« АРГИ, КОТОРЫЕ ВЫ КОПИРУЛИ ИЗ ПРЕДЫДУЩЕЙ СРЕДЫ »

Примечание: это работает с ruby ​​1.9.2p180 (2011-02-18 ревизия 30909) [x86_64-darwin10.7.0] , Рельсы 3.0.7, гем 1.8.0 и рейк 0.8.7

3 голосов
/ 21 октября 2011

Я смог решить эту проблему, понизив мою установку rubygem с 1.8.10 до 1.7.2.

gem update --system 1.7.2
1 голос
/ 06 июля 2010

выглядит как странная рекурсивная require.

Вы пытались удалить все версии rake и переустановить его? В 1.9.2rc есть ошибка, влияющая на загрузку гемов , так что это может быть? Я не внимательно изучал его, так как многие уже внимательно следят за ним ...

Примечание : 1.9.1 - это версия API, поэтому она правильная.

0 голосов
/ 15 сентября 2017

Обновление до последней минорной версии Rails. Так что, если вы на 4.2, обновите => 4.2.latest.

0 голосов
/ 07 июня 2013

Это может произойти, если у вас установлен rake gem как в наборе rvm вашего репо, так и в глобальном.

0 голосов
/ 21 февраля 2012

Другое возможное решение дано по адресу http://rubyist -journal.com / 2011/07/29 / howto-fix-rake-0-9-2-to-work-with-ruby-1-9- 2-под-RVM /

Кажется, все сводится к тому, что один и тот же rake gem установлен как в вашем пользовательском каталоге gem, так и во всей системе. Удаление одного из них устраняет проблему.

0 голосов
/ 26 января 2012

Если у вас установлен RVM, эта проблема может начать возникать после обновления rubygems до 1.8.15. Проблема заключалась в том, что я установил rake в глобальный набор гемов и набор гемов моего проекта. Решением было иметь только одну установку граблей. Чтобы удалить его из гемсета проекта: 1. CD к проекту 2. удаление грабли драгоценного камня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...