Подтвердить что ты не робот

Как заставить стойку работать вокруг обычной "Вы уже активировали стойку..."?

Это общий вопрос, но ни один из ответов, похоже, не решает проблему. Я получаю обычный: You have already activated rack 1.4.1, but your Gemfile requires rack 1.3.6. Using bundle exec may solve this.

Удаление файла Gemlock ничего не делало, а запуск bundle install снова ничего не сделал... запуск bundle install --binstubs не разрешил проблему как "запустить./bin/{rake|rails|etc" из вашего корня приложения ", только что вызвавший больше ошибок. Есть ли способ получить стойку вокруг этой, по-видимому, общей проблемы?

4b9b3361

Ответ 1

Проблема заключается в следующем:

  • У вас (по крайней мере) установлены две версии Rack.

  • Ваш Gemfile вызывает одну версию (1.3.6). Ваша текущая среда предоставляет другую версию (1.4.1).

  • К моменту запуска вашего приложения текущая среда уже загружена 1.4.1.

  • Bundler знает, что вам нужно загрузить 1.3.6, но он не может его загрузить. Вы не можете загружать более одной версии одного и того же драгоценного камня, поэтому версия 1.4.1 выигрывает с момента ее первой загрузки.

  • Бундлер жалуется вам.

Удалите проблематичные драгоценные камни (например, gem uninstall rack -v 1.3.6). Еще лучше, используйте RVM и gemsets, чтобы изолировать ваши драгоценные камни лучше, и вы не столкнетесь с этой проблемой.

Ответ 2

У меня была такая же проблема при попытке развернуть производственное приложение. Я использую rbenv для управления моей рубиной средой единорога, установленной по умолчанию в rbenv. Зависимости gem, перечисленные в Gemfile, устанавливаются связующим. Случается, что это вызывало проблему.

Обходной путь, который я сделал, - удалить unicorn из среды rbenv и установить его через Gemfile. В конце концов, я думаю, что этот подход более чист и прост.

Если вы используете RVM, проблема возникает, если вы определяете жемчужину в глобальной среде, которая зависит от стойки, как это делает единорог, а затем определяет гемсет для каждого проекта. Я думаю, что это из-за зависимостей рельсов 3.1 (я не уверен, хотя). Решение состоит в том, чтобы удалить unicorn (или жемчужину, устанавливающую стойку 1.4.1) из глобального набора gemset, и установить его в gemset для каждого проекта.

Если вы используете bundler и RVM, у вас есть два варианта:  - создать гемсет с рельсами и драгоценный камень, который устанавливает стойку 1.4.1 (лучше всего подходит для рабочих станций dev)  - поместите драгоценный камень, который зависит от стойки 1.4.1 в Gemfile, и дайте связующему звену волшебство.

Ответ 3

Эта проблема также распространена, когда вы клонируете проект из репозитория (ejem. github), потому что он может иметь уже Gemsfile.lock. Таким образом, драгоценные камни могут быть разными, чем те, которые ваша среда уже загрузила. Итак, firts получите резервную копию вашего Gemsfile.lock, затем удалите его и запустите установку пакета - без производства. Он установит все ваши зависимости в соответствии с GemFile. Имейте в виду, что если приложение устарело, оно может не работать с окружающей средой на вашем компьютере.

Ответ 4

Если это сообщение об ошибке, касающееся Spring, привело вас сюда, то есть вы получили сообщение, подобное этому:

Вы уже активировали Spring 1.4.0, но для вашего Gemfile требуется Spring 1.3.6.

Решение совпадает с принятым ответом:

gem uninstall spring -v 1.4.0

Ответ 5

Иногда все, что вам нужно сделать, это просто установить драгоценный камень.

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

$rhc ssh APP_NAME

$cd app-root

$gem install GEM_NAME

после чего приложение запустилось нормально.

Ответ 6

Откройте Gemfile.lock, найдите запись для стойки (1.3.6) и удалите ее.