Уже активированная версия рейка, отличная от требуемой в 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
дал этот вывод:
Выберите камень для удаления:
- грабли-10.5.0
- грабли-11.1.1
- грабли-11.1.2
- грабли-11.2.2
- грабли-11.3.0
- Все версии
Я удалил оба rake-11.2.2
а также rake-11.3.0
, Это исправило мою проблему
Мое сообщение об ошибке:
~ $ 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
Это должно работать сейчас
Попробуйте установить 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. Prepending
Bund 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
без ошибок.