Зачем использовать «bundle —deployment» вместо «bundle —without»?

#ruby #rubygems #bundler #rhel7 #rhel6

#ruby #rubygems #bundler #rhel7 #rhel6

Вопрос:

Справочная информация: Не вопрос

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

Мой текущий взлом

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

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

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

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

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

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

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

Комментарии:

1. --deployment опция не имеет ничего общего ни с --binstubs , ни с --without единицами. Его поведение точно описано в bundler.io/man/bundle-install.1.html#DEPLOYMENT-MODE

2. Есть один незначительный момент, касающийся цвета вывода: github.com/bundler/bundler/blob/master/lib/bundler/cli /…