“PHP Composer”与“Ruby Gems and Bundler”相比
(首先,这个问题不是“哪个更好”的问题。我只是想知道它们是如何相似的,并且在function方面有所不同。)
我是php开发人员,目前正在学习ruby 。 在这些日子里,鼓励许多php开发人员使用Composer
进行依赖管理。 在提问之前,我想首先validation我的知识。
根据我的理解,
-
Composer
是php库(或包)的依赖管理工具。 -
Composer
按项目安装php库(所谓的本地)。 我的意思是为project1安装的php库不能重新用于project2而不再为project2安装。
我注意到Ruby也有非常好的依赖管理工具“ RubyGems
”。 据我所知,
- “
RubyGems
”是“RubyGems
”的包管理器。 - “
Gem
”是一个以标准格式打包的Ruby程序或库,用于共享。 (Rails也是一个gem。) -
Gem
可以通过命令安装,就像gem install sinatra
。 - 但是,也有所谓的“
Bundler
”,它也是为应用程序捆绑gem的gem。 - 当命令
bundle install
运行时(在特定的ruby项目目录下),将为此ruby项目安装Gemfile中列出的所有gem。
所以,我的问题就在这里。
-
Composer
类似于RubyGems
还是Bundler
? - 运行
gem install sinatra
,它是否安装在系统级别? - 运行
bundle install
,是否在本地(仅在此项目上)或系统级别安装Gems? - 如果我需要两个版本的一个
gem
(例如sinatra )用于不同的项目,我应该如何处理?
(对不起,我的问题很长。如果我的理解有问题,请再次抱歉,请指出正确的。)
1)Composer与bundler更相似。 Composer为您的项目带来了一切,bundler将所有内容带到您的系统中,并在项目的上下文中“链接”它们。 Bundler正在与后面的gem合作。
2)是的。 gem install在系统范围内执行(如果使用rbenv或rvm之类的东西,则按用户执行)
3)看看1.系统范围,当你通过bundle exec运行时,根据Gemfile正确选择
4)我建议使用Gemfile,将您感兴趣的版本放在那里,然后让Bundler完成剩下的工作(它将在后面安装多个版本并选择正确的版本)。 一定要运行“bundle exec”。 如果你进入rvm,你也可以选择使用rvm gemset,但这样做更难处理,在尝试部署时你会遇到非常糟糕的时间。
- bcrypt-ruby不会与bundler一起安装,但可以与gem install一起使用
- 让ffmpeg与Heroku一起工作
- 在Ruby on Rails中,在“gem install ”之后,如何使它扩展Array,或者使用它的类方法?
- Bundler / Gemfile如何配置为在开发期间使用不同的gem源?
- 如何修复Rails 3(bundler)中的这个gem依赖问题?
- Rails – 无法运行app:无法加载EventMachine C扩展;
- 通过capistrano(&rvm)部署时出现捆绑安装错误
- 你如何激活或设置默认耙?
- 在我的gemfile中从Github指定一个gem的分叉版本时,“找不到gem”错误