(Исходя из ваших комментариев к вопросу)
Вам нужно будет добавить hpricot (и любой другой драгоценный камень, который ему нужен) к вашему Gemfile
, чтобы они были доступны в Bundler.Bundler - это на данный момент самый простой способ избежать конфликтов драгоценных камней и дурачества.
Представьте себе такую ситуацию: вы каким-то образом теряете драгоценные камни, которые у вас есть в настоящее время.Происходит ли это через изменение формата или системы или по любой другой причине.Что бы это ни было, вы потеряли свои драгоценные камни.Как вы собираетесь переустановить все свои драгоценные камни?Вы могли бы хранить их список где-то еще самостоятельно, но действительно ли это возможно?
Bundler решает эту проблему, заставляя вас указать, какие гемы нужны вашему приложению, и только добавлять эти драгоценные камни в нагрузку.путь, поэтому вы не можете найти hpricot
.Когда вы запускаете bundle install
в первый раз, это создает Gemfile.lock
, который содержит что-то вроде этого:
GEM
remote: http://rubygems.org/
specs:
abstract (1.0.0)
actionmailer (3.0.0)
...
Поскольку вы фиксируете этот файл в своем «исходном» решении для управления исходным кодом (будь то Git,SVN, FTP, что угодно, это не важно) у вас есть надежный способ указать точные драгоценные камни и точные версии тех драгоценных камней, которые использует ваше приложение.
Когда / Если ваши драгоценные камни стерты, вы можете просто клонировать свойснова проект и запустить bundle install
.Поскольку файл Gemfile.lock
существует, у вас будут те же самые драгоценные камни, которые у вас были изначально, даже если были обновления.
Если вы не хотите точных таких же драгоценных камней, простозапустите bundle update
, и это будет игнорировать спецификации в Gemfile.lock
, а вместо этого вернется к зависимости от Gemfile
для их определения.Это проверит наличие новых версий гемов и установит их, обновив Gemfile.lock
, когда это будет сделано.
Честно говоря, я не понимаю ненависть к Бандлеру.Если бы вы могли объяснить в более широких терминах, чем «ОМГ ЭТО ХОРОШО, ЙЕУДА САТАНА», я был бы очень признателен.
Редактировать: WedTM попросил образец Gemfile и связанный код:
В Gemfile у вас будет это:
group(:scripts) do
gem 'gem1'
end
Чтобы потребовать эти драгоценные камни для ваших скриптов:
require 'bundler'
Bundler.require(:scripts)
Вы также можете захотеть потребовать драгоценные камни по умолчанию, которыеВы можете сделать это, просто добавив значение по умолчанию в любом месте к аргументам require
:
Bundler.require(:default, :scripts)
Если по какой-то причине это не сработает, я думаю, что это произойдет, потому что он не может найти Gemfile
,Это можно исправить, установив ENV['BUNDLE_GEMFILE']
путь к Gemfile
.