2 драгоценным камням нужны разные версии одной и той же зависимости - PullRequest
12 голосов
/ 26 мая 2011

Используя Rails 3, я пытаюсь понять, что, по моему мнению, должно быть довольно простым ...

У меня есть 2 драгоценных камня, которые требуют 2 разных версий одной и той же зависимости от драгоценных камней. Обе версии зависимого гема установлены в моей системе, но я все равно получаю сообщение об ошибке от Rails: «Bundler не может найти совместимые версии для гема XXX».

Какова лучшая практика для обработки сценария, подобного этому?

Ответы [ 6 ]

9 голосов
/ 26 мая 2011

Я бы пошел на то, что предлагает @BaroqueBobcat. Я просто хочу добавить, что - если вам нужен новейший гем Twitter и вы не можете ждать, пока сопровождающий Groupon2 обновит его гем - вы можете раскошелиться на Groupon2 на GitHub, обновить его gemspec, посмотреть, работает ли он по-прежнему, запустив свои тесты (и попробуйте исправить это, если это не так) и включите свою собственную версию, используя URL-адрес Git, в свой Gemfile, например: gem "groupon2",: git => "https://github.com/yourgithubuser/groupon2.git".

Если вы хотите быть милым, вы можете предложить свои изменения сопровождающему Groupon2 с запросом на получение бонусов:)

3 голосов
/ 26 мая 2011

Если вам не нужны все функции Twitter gem версии 1.4.1, вы можете использовать версию 1.2.0, для которой требуется faraday ~> 0.5.4.и это должно сработать.Если этого не произойдет, вы можете попытаться указать владельцу groupon2, чтобы обновить его гем - он находится на github https://github.com/gangster/groupon2.

1 голос
/ 26 августа 2014

У меня была та же проблема, но в другом контексте: написание приложения, которое использует две разные версии зависимости от hashie (1.2.0 и 3.1.0)

Я вошел в Gemfile.lockи указал старую версию в скобках hashie (1.2.0), запустил пакетную установку, и это сработало.

0 голосов
/ 04 февраля 2014

bundle update разрешение конфликтов

0 голосов
/ 25 января 2013

Если вы находитесь в ситуации, когда драгоценные камни используются в разных проектах или, по крайней мере, не в одно и то же время, вы можете использовать функцию набора драгоценностей RVM в качестве обходного пути.У меня недавно была несовместимость драгоценных камней, похожая на вашу, и вот что я использовал.

Если у вас установлен RVM, сделайте следующее:

rvm gemset create gemset_name_here
rvm gemset use gemset_name_here

Итак, что вы делаете, это создаете совершенно новую и полностью обновленную среду для драгоценных камней, но при этом можете вернуться кдрагоценные камни, с которыми вы работали раньше в любое время.В первой строке создается новый набор гемов, а во второй строке указывается RVM начать его использовать.

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

Поэтому, когда вы используете gem 1 с зависимостью 1, вы используете gemset, который имеет требуемую версию.Затем, когда вы используете гем 2 с зависимостью 2, вы переключаетесь на набор гемов, который имеет это.

Теперь, если оба камня являются частью одного более крупного проекта, это не будет осуществимо, и вам, скорее всего, потребуетсяотредактируйте исходный код gem для запуска новой версии зависимости, как сказал @BaroqueBobcat.Во многих случаях это на самом деле довольно легко.Разработчики Ruby, как правило, очень хороши в том, чтобы сделать их код легким для восприятия.

0 голосов
/ 26 мая 2011

Взгляните на это решение, может быть, оно вам поможет: самоцветы

...