#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-MODE2. Есть один незначительный момент, касающийся цвета вывода: github.com/bundler/bundler/blob/master/lib/bundler/cli /…