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

"PHP Composer" compared with "Ruby Gems and Bundler"

(首先,这个问题不是"which is better"问题。我只是想知道它们在功能方面有何相似之处和不同之处。)

我是 php 开发人员,目前正在学习 ruby。 如今,许多 php 开发人员被鼓励使用 Composer 进行依赖管理 gement。在提问之前,我想先验证一下我的知识。

据我了解,

我注意到 Ruby 也有很好的依赖性 management 工具“RubyGems”。 据我所知,

那么,我的问题就在这里。

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

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

1) Composer 更类似于 bundler。 Composer 将一切都带到你的项目中,bundler 将一切都带到你的系统中,并 "links" 它们在你的项目上下文中。 Bundler 正在与后面的 gems 一起工作。

2) 是的。 gem 安装在系统范围内执行操作(或者如果您使用 rbenv 或 rvm 之类的东西,则针对每个用户)

3) 查看 1. 系统范围,当你通过 bundle exec

运行 事情时根据 Gemfile 正确选择

4) 我建议使用 Gemfile,将您感兴趣的版本放在那里,然后让捆绑器完成剩下的工作(它将在后面安装多个版本并选择正确的版本)。不过一定要运行 "bundle exec"。 如果您喜欢 rvm,您还可以选择使用 rvm gemset,但这更难处理,并且在尝试部署时会遇到非常糟糕的时间。