Как я могу установить гем, как если бы он был указан в Gemfile? - PullRequest
1 голос
/ 04 января 2012

Я хочу установить гем через gem install, но мне нужно, чтобы он разрешался с зависимостями текущего проекта.

В основном я хочу функциональность, которую дает мне упаковщик, когда я задаю gem 'xyz' вGemfile, но я не хочу добавлять этот конкретный драгоценный камень в Gemfile.

Я пытался сделать bundle exec gem install ..., но, похоже, он не работает.

edit: Причина, по которой я не хочу добавлять его в Gemfile, заключается в том, что это может быть что-то вроде metric_fu, metrical, saikuro, rails_best_practices и т. Д. Просто драгоценные камни, которые являются своего рода утилитой иможет только засорять проект.

Возможно, я захочу использовать их только временно или установить, попробуйте, если не получится так, как я хочу, выполните rvm gemset empty и bundle install еще раз для очистки.

Ответы [ 3 ]

3 голосов
/ 04 января 2012

Задача Bundler отчасти заключается в том, чтобы не позволять вам делать подобные вещи (чтобы вы не могли вводить драгоценные камни извне, когда ваш проект их не объявляет).

Ищите способделать это ищет ошибку в Bundler.Если вам удалось найти какой-то способ обойти механизмы принудительного применения Bundler, вам, вероятно, не стоит его использовать;вместо этого вы можете рассмотреть возможность регистрации в качестве ошибки в системе отслеживания ошибок Bundler.

Теперь мы подошли к реальным вопросам: что вы можете сделать?и что вам следует делать?

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

  • Вы должны добавить в свой Gemfile любые гемы, которые вы хотите использовать и которые интегрируются с вашим приложением (т. Е. Которые либо загружают ваше приложение).или которые загружаются как часть вашего приложения).Это не является обязательным требованием для любых драгоценных камней, которые воздерживаются от интеграции с вашим приложением.

  • Вы должны воздерживаться от передачи измененного Gemfile или Gemfile.lock в систему контроля версий, пока вы не убедитесь, что ваше приложениепродолжает работать приемлемо (тесты пройдены, новый гем делает что-то полезное и т. д.).

Или вам следует прекратить использовать Bundler, потому что вы хотите делать то, что явно разработано, чтобы помешать вамделать (не рекомендуется).

1 голос
/ 04 января 2012

С риском казаться глупым, почему бы не добавить его в gemfile? Вы всегда можете добавить его в свою группу, если не хотите устанавливать его везде.

0 голосов
/ 04 января 2012

Немного другой подход, если вы используете контроль версий, такой как Git, для создания новой ветки и установки гемов. Если это не сработает, удалите гем (я не уверен, что это будет сделано путем обновления пакета в старой ветке) и удалите ветку. Если это так, работай, объединяй свои вещи со старой веткой.

Хотя я верю, что у других ответов и комментариев есть несколько очень хороших моментов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...