Ви вже активували рейку 0.9.0, але ваш Gemfile потребує граблі 0.8.7


124

Я намагаюся запустити проект рейки, я розумію

Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

Якщо я роблю: "встановити пакет"

але я отримую

You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7

при цьому роблячи

rake db:migrate

Відповіді:


245

Спочатку перевірте, чи графа згадується у вашому Gemfile. Якщо ні, додайте її та вкажіть версію "Ви вже активували".

Тоді вам потрібно буде повідомити пакет, щоб оновити версію рейку, яку вона використовує для вашого додатка:

bundle update rake

Це оновить Gemfile.lockдля вас.


2
це не спрацювало для мене. коли я запускаю цю команду, вона робить те саме, що і "встановити пакет", і це показує, що він використовує ту саму версію рейку. Він не оновлює його.
EE33

5
Мені довелося додати gem 'rake', 'version #' до свого gemfile і запустити 'rake update buke для оновлення', щоб мій gemfile.lock був правильно оновлений. FYI для тих, хто не міг змусити це рішення працювати на них.
EE33

44

Там, де ви в даний час використовуєте команди граблі, як

rake db:migrate

Використовуйте це замість:

bundle exec rake db:migrate

так буде, поки остання версія рейок та / або граблі не буде добре працювати разом.


3
Біт про "останню версію рейок та / або граблів", що працюють разом, має значення лише в конкретний, безіменний, момент часу та під певними припущеннями щодо робочого потоку, який використовується. Я думаю, що це означає: "ти використовуєш кров'яні рейки, що кровоточать, а граблі ще не наздогнали". Але цей випадок може бути вирішений і підходами "bundle exec", або "редагувати Gemfile", і ці підходи також вирішують проблему, коли немає внутрішніх проблем сумісності, а лише заплутана історія робочого процесу.
jackr

24

Я дякую Добрі Ден, ура, чувак. але трохи більше мені довелося зробити. ось рішення (працює для мене). Я додав

gem 'rake','0.8.7'

на Gemfile, якого там не було, але моя нова версія рейки автоматично встановлює рейку (0.9.0).

після того, як я видалив rake0.9.0 до gem uninstall rake і після виконання bundle update rake, я можу створити та перемістити базу даних.


8

Граблі 0,9,0 ламають рейки.

Дивіться тут: Rake 0.9.0 'undefined method' task ''

Використовуйте bundle exec rakeзамість того, rakeщоб запускати граблі у правильній версії.


7

Вкажіть потрібну версію у вашому Gemfile.

gem 'rake', '0.9.0' 

тоді

bundle update rake

вам потрібно використовувати bundle exec, щоб виконати завдання граблі

bundle exec rake db:migrate

Здається, не "деактивувати" більш пізню версію. Однак видалення Rake повністю та повторна установка робіт.
ДжозефК

6

О, дивіться, це майбутнє. Для мене було нарікання, що я встановив граблі 10.x, коли хотів 0.9.5. Не зовсім впевнений, недостатньо знайомий з Рубі, щоб справді розібратися в тому, що трапилося з останніми номерами версій, але я зробив:

gem uninstall rake
gem install rake -v 0.9.5

змусити систему встановити версію граблі, яку хотів додаток (для мене це був Octopress).


2
Майбутнє дзвонило, і воно хоче позичити ваші штани Hammer.
Кіт Лейн

Привіт, це знову майбутнє. Я чую, як штани Hammer нарешті повертаються.
субдігіт

5

У мене була ця проблема (з іншим самоцвітом, який не був граблім), і я зміг її виправити

gem uninstall <complaining gem>
gem install <complaining gem>

bundle install
bundle update

Зауважте, що ключове слово "sudo" не використовувалося (наприклад, встановлення пакета sudo), оскільки це може розмістити ваш дорогоцінний камінь у каталогах, де можливо не шукає ваш додаток рейлів.


3

Якщо я зрозумів, про що ви не питаєте, вам потрібно відкрити Gemfileфайл і змінити рядок ...

gem 'rake', '0.8.7'

... до ...

gem 'rake', '0.9.0'

Що робити, якщо я хочу використовувати 0,8,7 замість 0,9?
Кір

6
дорогоцінний дорогоцінний камінь за замовчуванням не вказаний у вашому Gemfile, оскільки це залежність від Rails. якщо ви оновили дорогоцінний камінь до 0,9.0, у вас все ще є 0,8,7 дорогоцінного каміння у вашій системі (перевірити gem list). Я впевнений, що якщо gem 'rake', '0.8.7'все-таки вказано у вашому Gemfile.lock, він все одно без проблем використовуватиме 0,8,7 дорогоцінного каміння. якщо ні, то спробуйте запустити bundleпісля додавання gem 'rake', '~> 0.8.7'до свого Gemfile (not .lock) і подивіться, чи він щось говорить.
danneu

Я згоден з @Dobry Den.
Олів'є Л.

gem 'граблі' не визначено. Якщо у мене є кілька Gem Rake (0.8.7 і 0.9.0), він за замовчуванням. Чи можемо ми зробити за замовчуванням старий?
Маджа Маджі

3

Додайте це до свого Gemfile

# Rake 0.9.0 break Rails.
gem "rake", "!= 0.9.0"

А потім видаліть рейку-0.9.0

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.