use*_*159 96 ruby gem rubygems bundler rvm
我是Ruby的新手,并试图围绕以下概念:Bundler vs RVM vs gems vs RubyGems vs gemsets vs system rub我很困惑.
有人可以描述一个"最佳实践",说明如何在全新安装最新版本的Ubuntu时管理所有这些内容吗?我应该安装什么,以及如何使用它?
我猜sudo apt-get install ruby不会推荐做一个,但我不确定.除了"所有其他Ruby东西"之外,我在我的系统上尝试过它.这只会增加我的困惑.我不是在谈论Rails,而只是常规的Ruby宝石(例如Vagrant,Chef,脚本).
Mar*_*tin 174
根据之前的回答,这涉及到很多,所以请考虑这个简短的介绍.
gem是Ruby库的打包方式.他们对Ruby来说是Java的罐子.在gem文件中,您可以找到Ruby代码(.rb文件),还可以找到测试,以及一个特殊文件,提供有关gem本身的信息,例如名称,依赖项和版本( gemspec).任何Ruby项目都可以通过只需要声明依赖项的 Gemfile来定义它所需的gem.Rubygems是包管理器的名称 - 用于安装包的工具(而gem是包本身).Rubygems现在是Ruby的一部分.
Bundler是管理宝石可以忍受的原因.根据您的Gemfile,使用 bundle install简单调用bundler将下载并安装所有必需的gem.使用标准gem命令,您必须使用手动安装每个命令gem install <gem_name>.Bundler不是Ruby的一部分(它本身被打包为gem),但对于大多数应用程序来说它是"事实上的标准"(你不会发现很多人没有使用它,并且实际上没有很好的理由不使用它).
RVM是一个工具,允许您在机器上安装多个版本的Ruby,并在需要时在它们之间切换.这可用于安装Ruby 1.8和1.9,甚至是"MRI"(Matz的Ruby,默认实现)和替代品(如JRuby或Rubinius).请注意,此字段中并不单独使用RVM,例如参见 rbenv.
一个宝石在RVM是一组针对特定的情况下,通常一个项目的宝石.如果您正在开发不同的应用程序,每个应用程序都有自己的宝石集,并希望将它们分开,这将非常有用.
系统Ruby在使用RVM时,是安装在机器上的Ruby版本(即不通过RVM).
如果您刚刚开始,宝石和捆绑包是您感兴趣的.你现在可以放弃RVM和gemset.