"PHP Composer" по сравнению с "Ruby Gems and Bundler"
(Во-первых, этот вопрос не является вопросом "который лучше". Я просто хочу знать, как они похожи и отличаются перспективой функциональности.)
Я разработчик php и в настоящее время изучаю ruby .
В наши дни многим разработчикам php рекомендуется использовать Composer
для управления зависимостями. Прежде чем задавать вопросы, я хотел бы сначала подтвердить мои знания.
По моему мнению,
-
Composer
- это инструмент управления зависимостями для php-библиотек (или пакетов).
-
Composer
установлена библиотека php на каждый проект (так называемый локально). Я имею в виду, что библиотека php, установленная для project1, не может быть повторно использована для проекта2 без установки для проекта2.
Я заметил, что Ruby также имеет очень хороший инструмент управления зависимостями RubyGems
".
По моим сведениям,
- "
RubyGems
" - это менеджер пакетов для "Gems".
- "
Gem
" - это рубиновая программа или библиотека, упакованная в стандартный формат для совместного использования. (Rails - также жемчужина.)
-
Gem
можно установить с помощью команды gem install sinatra
.
- Но существует также так называемый "
Bundler
", который также является жемчужиной для связывания драгоценных камней для приложения.
- При запуске команды
bundle install
(в определенном каталоге проекта ruby) все драгоценные камни, перечисленные в Gemfile, установлены для этого рубинового проекта.
Итак, мои вопросы здесь.
-
Composer
аналогичен RubyGems
или Bundler
?
- При запуске
gem install sinatra
он установлен на уровне всей системы?
- При запуске
bundle install
Gems устанавливаются локально (только для этого проекта) или общесистемного уровня?
- Если мне нужны две версии одного
Gem
(например, синатра) для разных проектов, как мне обращаться?
(Извините за мой длинный вопрос. Если мое понимание - это что-то не так, извините еще раз и укажите правильный.)
Ответы
Ответ 1
1) Композитор больше похож на расслоение.
Composer приносит все в ваш проект, связующий приносит все в вашу систему и "связывает" их в контексте вашего проекта. Бундлер работает с драгоценными камнями в спине.
2) да. gem install делает все общесистемное (или для каждого пользователя, если вы используете что-то вроде rbenv или rvm)
3) см. 1. широкая система и правильно выбрана в соответствии с Gemfile, когда вы запускаете вещи через пакет exec
4) Я рекомендую использовать Gemfile, помещая интересующую вас версию и позволяя отладчику делать все остальное (он будет на задней панели устанавливать несколько версий и выбирать правильный). Однако обязательно запустите "bundle exec".
У вас также есть возможность использовать rvm gemset, если вы работаете в rvm, но с этим сложнее справиться, и при попытке развертывания у вас будет очень плохое время.