(首先,这个问题不是“哪个更好”的问题。我只是想知道它们在功能方面有何相似之处和不同之处。)
我是 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。
那么,我的问题就在这里。
Composer
是否类似于RubyGems
或Bundler
?- 当运行
gem install sinatra
时,它是否安装在系统级别? - 当运行
bundle install
时,Gems 是在本地(仅在这个项目上)还是在系统范围内安装? - 如果我需要一个
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/