"PHP Composer"与"Ruby Gems and Bundler"相比

Ste*_*ung 10 php ruby gem bundler composer-php

(首先,这个问题不是"哪个更好"的问题.我只想知道它们是如何相似的,并且在功能方面有所不同.)

我是php开发人员,目前正在学习ruby.在这些日子里,鼓励许多php开发人员使用Composer依赖管理.在提问之前,我想首先验证我的知识.

根据我的理解,

  • Composer 是一个用于php库(或包)的依赖管理工具.
  • Composer每个项目基础安装php库(所谓的本地).我的意思是为project1安装的php库不能重新用于project2而不再为project2安装.

我注意到Ruby也有非常好的依赖管理工具" RubyGems".据我所知,

  • " RubyGems"是"宝石"的包管理器.
  • " Gem"是以标准格式打包的Ruby程序或库,用于共享.(Rails也是一个宝石.)
  • Gem可以通过这样的命令安装gem install sinatra.
  • 但是,也有所谓的" Bundler",它也是为应用程序捆绑宝石的宝石.
  • 当命令bundle install运行时(在特定的ruby项目目录下),将为此ruby项目安装Gemfile中列出的所有gem.

所以,我的问题在这里.

  1. Composer类似于是否RubyGems还是Bundler
  2. 运行时gem install sinatra,是否在系统级别安装?
  3. 运行时bundle install,是否在本地(仅在此项目上)或系统级别安装Gems?
  4. 如果我需要两个版本的一个gem(例如sinatra)用于不同的项目,我应该如何处理?

(对不起,我的问题很长.如果我的理解有问题,请再次抱歉,请指出正确的.)

Mir*_*cea 9

1)Composer更像Bundler.Composer为您的项目带来了一切,bundler将所有内容带到您的系统中,并在项目的上下文中"链接"它们.Bundler正在与后面的宝石合作.

2)是的.gem install在系统范围内执行(如果使用rbenv或rvm之类的东西,则按用户执行)

3)看看1.系统范围,当你通过bundle exec运行时,根据Gemfile正确选择

4)我建议使用Gemfile,将您感兴趣的版本放在那里,然后让Bundler完成剩下的工作(它将在后面安装多个版本并选择正确的版本).一定要运行"bundle exec".如果你进入rvm,你也可以选择使用rvm gemset,但是这很难处理,你在尝试部署时会遇到非常糟糕的时间.