"PHP Composer" 与 "Ruby Gems and Bundler" 相比
"PHP Composer" compared with "Ruby Gems and Bundler"
(首先,这个问题不是"which is better"问题。我只是想知道它们在功能方面有何相似之处和不同之处。)
我是 php 开发人员,目前正在学习 ruby。
如今,许多 php 开发人员被鼓励使用 Composer
进行依赖管理 gement。在提问之前,我想先验证一下我的知识。
据我了解,
Composer
是 php 库(或包)的依赖管理器gement 工具。
Composer
每个项目安装 php 库(所谓的本地)。我的意思是 php 为 project1 安装的库不能重新用于 project2,而无需为 project2 再次安装。
我注意到 Ruby 也有很好的依赖性 management 工具“RubyGems
”。
据我所知,
- "
RubyGems
" 是 "Gems" 的包管理器。
- "
Gem
" 是一个 Ruby 程序或库,以标准格式打包用于共享。 (Rails 也是一个 gem。)
Gem
可以通过这样的命令安装 gem install sinatra
.
- 但是,还有所谓的“
Bundler
”,它也是一个gem,用于捆绑一个应用程序gem。
- 当命令
bundle install
运行s(在特定的ruby项目目录下)时,Gemfile中列出的所有gems都会为此[=86=安装] 项目。
那么,我的问题就在这里。
Composer
类似于 RubyGems
或 Bundler
?
- 当 运行
gem install sinatra
时,它是否安装在系统级别?
- 当 运行
bundle install
时,Gems 是在本地(仅在该项目上)还是在系统范围内安装?
- 如果我需要一个
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,但这更难处理,并且在尝试部署时会遇到非常糟糕的时间。
(首先,这个问题不是"which is better"问题。我只是想知道它们在功能方面有何相似之处和不同之处。)
我是 php 开发人员,目前正在学习 ruby。
如今,许多 php 开发人员被鼓励使用 Composer
进行依赖管理 gement。在提问之前,我想先验证一下我的知识。
据我了解,
Composer
是 php 库(或包)的依赖管理器gement 工具。Composer
每个项目安装 php 库(所谓的本地)。我的意思是 php 为 project1 安装的库不能重新用于 project2,而无需为 project2 再次安装。
我注意到 Ruby 也有很好的依赖性 management 工具“RubyGems
”。
据我所知,
- "
RubyGems
" 是 "Gems" 的包管理器。 - "
Gem
" 是一个 Ruby 程序或库,以标准格式打包用于共享。 (Rails 也是一个 gem。) Gem
可以通过这样的命令安装gem install sinatra
.- 但是,还有所谓的“
Bundler
”,它也是一个gem,用于捆绑一个应用程序gem。 - 当命令
bundle install
运行s(在特定的ruby项目目录下)时,Gemfile中列出的所有gems都会为此[=86=安装] 项目。
那么,我的问题就在这里。
Composer
类似于RubyGems
或Bundler
?- 当 运行
gem install sinatra
时,它是否安装在系统级别? - 当 运行
bundle install
时,Gems 是在本地(仅在该项目上)还是在系统范围内安装? - 如果我需要一个
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,但这更难处理,并且在尝试部署时会遇到非常糟糕的时间。