Ответ 1
Я боюсь, что более простое решение выполняет эту команду вместо rake db: migrate
bundle exec rake db:migrate
Я пытаюсь запустить Rails 3 beta 4 и Ruby 1.9.2rc на Ubuntu 10.04. Сначала он работал, но после выполнения первого пакета install/package теперь я получаю следующие ошибки во всех проектах 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
Я боюсь, что более простое решение выполняет эту команду вместо rake db: migrate
bundle exec rake db:migrate
Я тоже сталкивался с этой проблемой. Это, похоже, не связано с конкретными версиями рельсов или рубинов, которые вы упоминаете, которые отличаются от тех, которые я использую (Rails 2.3.8, Rake 0.8.7, Ruby 1.9.1p378). Кажется, что это связано с тем, что сборщик и грабли не работают хорошо вместе.
Резолюция, которая сработала для меня, упоминается внизу этот маяк. Вот короткая версия:
Как только вы это сделаете, вы немного запутаете связку. В этот момент вам нужно очистить RUBYOPT, чтобы запустить команду bundle:
RUBYOPT= bundle install --relock
EDIT:
Думая об этом немного больше, я не уверен, что это обязательно лучший способ решить эту проблему. Вы можете дать совет Hiral Desai и некоторые другие ответы, прежде чем прибегать к такому подходу, поскольку этот изменяет среду.
В соответствии с предыдущим сообщением от Eric W. установлена переменная среды RUBYOPT. Если вы хотите выйти из новой оболочки bash, которая открывается "bundle exec bash", просто скопируйте линию окружения RUBYOPT, выйдите из оболочки и введите "export RUBYOPT =" ARGS, КОТОРЫЕ ВЫ КОПИРОВАЛИ ИЗ ПРЕДЫДУЩЕЙ СРЕДЫ ",
Примечание: это работает с ruby 1.9.2p180 (2011-02-18 версия 30909) [x86_64-darwin10.7.0] , Rails 3.0.7, gem 1.8.0 и Rake 0.8.7
bundle exec bash
работает для меня
Мне удалось решить эту проблему, понизив мою установку rubygem с 1,8.10 до 1.7.2.
gem update --system 1.7.2
Похож на странный рекурсивный require
.
Вы пытались удалить все версии rake
и переустановить его? Есть ошибка в 1.9.2rc влияющая на загрузку gem, так что может быть? Я не пристально смотрел на него, поскольку многие люди уже внимательно следят за ним...
Примечание. 1.9.1 - это версия API, поэтому она верна.
У меня была папка .bundler в корневом каталоге, которая была противоречивой. Удаление его сделало это для меня.
rm -rf ~/.bundler
Я тоже сталкивался с этой проблемой после обновления rubygem (1.8.10) и bundler (1.0.18)
Я решил обновить rake до 0.9.2
Только что получил такую ошибку из-за удаленного .rvmrc
Поэтому, пожалуйста, убедитесь, что вы используете рейк в правильной среде;)
Если у вас установлен RVM, эта проблема может возникнуть после обновления rubygems до версии 1.8.15. Проблема заключалась в том, что у меня был рейк, установленный в глобальном gemset и моем проекте gemset. Решение состояло в том, чтобы иметь только одну установку рейка. Чтобы удалить его из проекта gemset: 1. cd к проекту 2. gem uninstall rake
Другое возможное решение дается в http://rubyist-journal.com/2011/07/29/howto-fix-rake-0-9-2-to-work-with-ruby-1-9-2-under-rvm/
Кажется, сводится к тому, что один и тот же громоотвод установлен как в вашем каталоге персональных жемчужин, так и в общесистемной области. Удаление одной проблемы устраняет проблему.
Это может произойти, если у вас есть грабли gem, установленные как в вашем репо rvm gemset, так и в глобальном.
Обновить до последней версии Rails. Итак, если вы в 4.2, обновите = > 4.2.latest.