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

标签 php ruby gem composer-php bundler

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

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

据我了解,

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

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

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

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

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

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

最佳答案

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,但这更难处理,并且在尝试部署时会遇到非常糟糕的时间。

关于php - "PHP Composer"与 "Ruby Gems and Bundler"相比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30462969/

相关文章:

php - 如何从 Laravel Horizo​​n 中的 Redis 队列重试所有失败的作业

ruby-on-rails - 使用多个 Proc 对象的验证问题

ruby-on-rails - 为什么会有如此多的 gem 被淘汰,您如何处理依赖关系?

php - 如何使用sql中的两个表数据进行管理登录?

php - 查询似乎不适用于枚举

ruby - ruby 中哈希数据类型中的 "Default value is the same object"

ruby-on-rails - 将一个巨大的字符串作为参数传递给 Sidekiq worker 是个好主意吗?

ruby-on-rails - 从 Rails 中的 gem 覆盖模块方法

ruby-on-rails - 将 SOLR/Lucene 搜索与 Rails 应用程序集成 - 哪些 gem ?提示?

php - 如何在 Laravel 中实现模型修订?