Зачем использовать «bundle --deployment» вместо «bundle --without»? - PullRequest
4 голосов
/ 06 марта 2019

Фон: Не Вопрос

У меня есть проект, который выполняется как в разработке, так и в производстве в среде chruby, где ruby-install был установлен как root, а рубины хранятся в / opt / rubies. Мне очень тяжело (как и многим людям) заставить nokogiri скомпилировать свои собственные расширения как часть пакета, но он прекрасно компилируется, как любой пользователь chruby вне директории проекта, и до тех пор, пока нет binstub. Это просто фоновый контекст; это не совсем то, о чем мой вопрос.

Мой текущий хак

Я обнаружил, что когда я добавил в свой проект binstubs, случается всякое зло. Пока что моё лучшее решение выглядит так:

# skip any bundled/binstub version of bundler
rm -rf ./bin
`which bundle` install --binstubs --without="development test"

, который, кажется, работает просто отлично. Nokogiri, по-видимому, не является производственной зависимостью (ууу!), А каталог ./bin урезается только до драгоценных камней, необходимых для производства.

Вопрос: Исправит ли флаг развертывания Bundler что-нибудь?

Итак, вот вопрос: в чем разница между тем, что я здесь делаю, и bundle install --deploy с binstubs или без? Я знаю, что это указывает на vendor / bundle вместо bin по умолчанию, но документы на самом деле не объясняют плюсы и минусы этого подхода (по крайней мере, не так, как я понимаю).

Помимо знаний, которые ценны сами по себе, мне бы очень хотелось продавать производственные гемы таким образом, чтобы они могли работать в разных системах (например, RHEL6 и RHEL7) без необходимости перестраивать собственные расширения или удалять их. разработка / тестирование драгоценных камней на производственных машинах.

Является ли флаг развертывания ответом? Или есть лучший способ продавать драгоценные камни с собственными расширениями для кросс-дистрибутивных проектов?

...