【问题标题】:"PHP Composer" compared with "Ruby Gems and Bundler"“PHP Composer”与“Ruby Gems and Bundler”的比较
【发布时间】:2015-05-26 15:35:27
【问题描述】:

(首先,这个问题不是“哪个更好”的问题。我只是想知道它们在功能方面的相似之处和不同之处。)

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

据我了解,

  • Composer 是 php 库(或包)的依赖管理工具。
  • Composer 为每个项目安装了 php 库(所谓的本地)。我的意思是为 project1 安装的 php 库不能在没有再次为 project2 安装的情况下重新用于 project2。

我注意到 Ruby 还有非常好的依赖管理工具“RubyGems”。 据我所知,

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

所以,我的问题在这里。

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

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

【问题讨论】:

  • 感谢您的问题,我在 8 m 前您所在的位置。你问了我所有的问题。 :) 我简直不敢相信。这就像我自己在问这个问题。

标签: php ruby gem composer-php bundler


【解决方案1】:

1) Composer 更类似于 bundler。 Composer 将所有内容带入您的项目,bundler 将所有内容带入您的系统并在您的项目上下文中“链接”它们。 Bundler 在后面使用 gems。

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

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

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

【讨论】:

  • 值得注意的是,对于#2,它可能仅为您的用户安装它,并且仅适用于一个版本的 Ruby。使用RVMrbenv 之类的东西来管理多个版本是很常见的。
  • 是的。确实如此。试图保持简单
猜你喜欢
  • 2011-02-10
  • 2012-08-20
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 2011-08-31
  • 1970-01-01
相关资源
最近更新 更多