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