Уже активированная версия рейка, отличная от требуемой в Gemfile, предотвращает использование команд rake.

Вот моя ошибка:

rake aborted!
Gem::LoadError: You have already activated rake 10.3.1, but your Gemfile requires rake 10.2.2. Prepending `bundle exec` to your command may solve this.
/Users/AaronWilliamson/.gem/ruby/2.1.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:34:in `block in setup'
/Users/AaronWilliamson/.gem/ruby/2.1.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:19:in `setup'
/Users/AaronWilliamson/.gem/ruby/2.1.0/gems/bundler-1.5.3/lib/bundler.rb:119:in `setup'
/Users/AaronWilliamson/.gem/ruby/2.1.0/gems/bundler-1.5.3/lib/bundler/setup.rb:7:in `<top (required)>'
/Users/AaronWilliamson/Desktop/Ripelist-Classifieds/config/boot.rb:4:in `<top (required)>'
/Users/AaronWilliamson/Desktop/Ripelist-Classifieds/config/application.rb:1:in `<top (required)>'
/Users/AaronWilliamson/Desktop/Ripelist-Classifieds/Rakefile:4:in `<top (required)>'
LoadError: cannot load such file -- bundler/setup
/Users/AaronWilliamson/Desktop/Ripelist-Classifieds/config/boot.rb:4:in `<top (required)>'
/Users/AaronWilliamson/Desktop/Ripelist-Classifieds/config/application.rb:1:in `<top (required)>'
/Users/AaronWilliamson/Desktop/Ripelist-Classifieds/Rakefile:4:in `<top (required)>'
(See full trace by running task with --trace)

Я не могу запускать какие-либо рейк-задачи, и это, кажется, корень всех моих других проблем. Это было не так пару дней назад, когда я запускал рейк-команды. Может кто-нибудь объяснить, что здесь происходит и как вернуть мое приложение в нужное русло? Я ударил стену. Также, bundle exec не исправить корень проблемы для меня. Мне никогда не приходилось делать это в прошлом, а сейчас это не работает.

18 ответов

Решение

РЕДАКТИРОВАТЬ 2: Вы должны смотреть на bundle update и немного измените свой рабочий процесс. Обратитесь к этому вопросу для получения дополнительной помощи.


Оригинальный ответ

Это простая проблема, которая возникает, когда в вашем наборе есть версия рейка, которая новее номера версии вашего Gemfile.lock упоминает.

Как указано в сообщении об ошибке, вы можете использовать bundle exec чтобы все заработало.

Мое решение в таких случаях просто удалить Gemfile.lock если меня не слишком волнуют другие версии гемов и их бесконечные зависимости. В противном случае вы можете попробовать просто удалить одну строку в Gemfile.lock который говорит о версии граблей. бежать bundle install и мир снова должен стать счастливым. (редактировать 2: Выполнить bundle update --source вместо этого. Не делай этого.)

PS: попробуйте использовать gemsets и организовать ваши гемы с помощью rvm для различных проектов.

редактировать

Теперь я предпочитаю использовать rbenv для управления установками, а все гемы проекта находятся в vendor/bundle с помощью bundle install --path вариант. Позже добавьте в каждую команду gem bundle exec,

Следовательно, rails s становится bundle exec rails s, Немного больше печатать, на мой взгляд, лучше, если это будет означать, что все останется чистым, а конфликты, подобные этому, не произойдут.

Простое решение, которое сработало для меня, это просто запустить bundle update rake,

Ты можешь использовать rubygems-bundler чтобы решить это. Запустите следующие команды:

$ gem install rubygems-bundler

$ gem regenerate_binstubs

Тогда попробуйте снова свои грабли.

У меня была похожая проблема, и я скептически относился к удалению строки из моего Gemfile.lockКазалось, хак и неудобство препинания bundle exec для каждой команды грабли тоже не вариант. Я исправил это, сначала войдя в мой Gemfile.lock чтобы увидеть, какая версия rake был там (в моем случае это было 11.1.2). Моя мысль была удалить rake и установите эту версию. Бег gem uninstall rake дал этот вывод:

Выберите камень для удаления:

  1. грабли-10.5.0
  2. грабли-11.1.1
  3. грабли-11.1.2
  4. грабли-11.2.2
  5. грабли-11.3.0
  6. Все версии

Я удалил оба rake-11.2.2 а также rake-11.3.0, Это исправило мою проблему

Использовать этот:

gem install rake -v "version-you-want"

Мое сообщение об ошибке:

~ $ rake db:migrate                                                                                                                                                                            [2.6.5][10:21:00]
rake aborted!
Gem::LoadError: You have already activated rake 12.3.2, but your Gemfile requires rake 13.0.1. Prepending `bundle exec` to your command may solve this.
/Users/torvalds/workspace/ekohe/whitespace/config/boot.rb:5:in `<top (required)>'
/Users/torvalds/workspace/ekohe/whitespace/config/application.rb:3:in `require_relative'
/Users/torvalds/workspace/ekohe/whitespace/config/application.rb:3:in `<top (required)>'
/Users/torvalds/workspace/ekohe/whitespace/Rakefile:6:in `require_relative'
/Users/torvalds/workspace/ekohe/whitespace/Rakefile:6:in `<top (required)>'
(See full trace by running task with --trace)

Я использую rbenv для управления моей средой Ruby.

Моя глобальная версия Ruby так же известна, как и default Версия Ruby 2.7.1, потому что я установил его как rbenv global 2.7.1. Однако мой рейк под Ruby 2.7.1 составляет12.3.2

~ $ rake --version

rake, version 12.3.2

Моя версия проекта Ruby 2.6.5. однако мой рейк под Ruby 2.6.5 в моем проекте13.0.1

~ $ bundle exec rake --version

rake, version 13.0.1

поэтому мне нужно удалить глобальный рейк

~ $ gem uninstall rake

и переустановите его обратно

~ $ gem install rake

Fetching rake-13.0.1.gem
Successfully installed rake-13.0.1
1 gem installed

оно работает! ~~~

Не уверен, повлияет ли это на другие проекты. Однако пока это работает.

Согласно этому решению (это работало для меня): /questions/24662851/uzhe-aktivirovannaya-versiya-rejka-otlichnaya-ot-trebuemoj-v-gemfile-predotvraschaet-ispolzovanie-komand-rake/24662875#24662875

Вы можете решить это с помощью rubygems-bundler

Введите эти команды в своем терминале:

$ gem install rubygems-bundler
$ gem regenerate_binstubs

Это должно работать сейчас

Введите эту команду:

bundle update rake

Попробуйте установить nodejs, это решило мою проблему.

Если вы используете ubuntu, запустите эту команду.

sudo apt-get install nodejs

bundle update rake у меня тоже работает.

Моя ошибка была Gem::LoadError: You have already activated rake 12.3.1, but your Gemfile requires rake 12.3.0. PrependingBund Execto your command may solve this.

Я пробовал другой способ, который удалить Gemfile.lock затем беги bundle install, После этого я бегу rake db:migrate, И все работает отлично.

Хотя я не думаю удалить Gemfile.lock плохая практика, но может быть; кто знает.

У меня была такая же ошибка:

Вы уже активировали rake 12.0.0, но ваш Gemfile требует rake 11.3.0. Предварительная "bundle exec" к вашей команде может решить эту проблему.

Я решил это, запустив bundle update

это обновило версию rake до моей активированной версии rake, и все заработало. Надеюсь, что это работает для вас!

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

Самый простой способ отладки это запустить bundle update,

Другие способы могут быть удалены Gemfile.lock и работает bundle install или просто удаляя строку в Gemfile.lock что соответствует версии рейка и попробуйте bundle install, Но иногда это может испортить Gemfile. Я бы предпочел первый метод, потому что он самый безопасный и простой.

Идти в Gemfile.lockнайдите файл rake и обновите там версию.

Я получил эту ошибку:

Gem::LoadError: Вы уже активировали rake 11.2.2, но ваш Gemfile требует rake 11.1.2. Предварение bundle exec к вашей команде может решить это.

Что я сделал, чтобы изменить версию рейка в Gemfile.lock от: rake (11.1.2) в rake (11.2.2),

После этого все работало нормально.

Я встречаю подобную проблему. Мое решение состоит в том, чтобы изменить строку rake версии "gem 'rake', '~> 10.3'" в файле Gemfile, удалить Gemfile.lock и запустить 'bundler install', новый Gemfile.lock покажет новую версию 10.3.1. Тогда все будет хорошо.

Я исправил, просто добавив bundle exec в виде

      "bundle exec rake db:create" or migrate

У меня возникла эта проблема:

Вот мое решение:

Решение 1:

Это решение работает много времени, просто обновите драгоценный камень, вызывающий проблему, скажем, драгоценный камень rack

bundle update rack

Решение 2:

В некоторых случаях Решение 1 может не работать, и вам потребуется отредактироватьGemfile.lock файл.

Просто откройте свой Gemfile.lock файл, а затем измените версию на запрошенное обновление.

В моем случае драгоценный камень был rack, Я имел rack 2.0.7 определено в моем Gemfile.lock файл, но требуется мое приложение rack 2.1.2, Мне просто пришлось изменить его на rack 2.1.2 в Gemfile.lock файл.

Затем мне пришлось удалить предыдущую версию стойки, которая rack 2.0.7

 gem uninstall rack -v 2.0.7

И наконец установили новый драгоценный камень в производство

bundle install --without development test

Решение 3:

В очень редких случаях Решение 1 и Решение 2 могут не работать, и вам потребуется отредактироватьGemfile перед обновлением драгоценного камня.

В моем случае драгоценный камень был puma, Я имел puma ~> 3.11 определено в моем Gemfile, но требуется мое приложение puma ~> 4.3.1. На данный момент работаетbundle update puma и редактирую мой Gemfile.lock файл не работал, так как puma ~> 3.11 версия, указанная в Gemfile, не позволит обновить puma ~> 4.3.1.

Мне просто пришлось сменить версию puma в Gemfile на puma ~> 4.3.1 а затем запустил команду.

bundle update puma

Вот и все.

надеюсь, это поможет

Для Rails версии 5 или 6 попробуйте использовать команду "rails":

rails db:migrate 

без ошибок.

Другие вопросы по тегам