Rubygems,Bundler和RVM混淆
在再次询问之前,我读了“ Rubygems,Bundler和RVM之间的关系 ”。
好吧,这样的问题很多,但是回答的人说他们和Rubygems,RVM和Bundler一起工作,他们没有解释每个工作是如何独立的。
当我们安装gem的时候,我真的很困惑,三个人是如何孤立地工作的。 请不要告诉我你是如何工作的,这对我有帮助,但是当我们和他们一起玩时,我不知道发生了什么。
我的困惑可以分解成这些问题。 在以下情况下安装的gem在哪里?
- 我只有Rubygems(没有RVM或Bundler)?
- Rubygems和RVM安装?
- Rubygems,RVM和Bundler是否安装?
请通过networking上的资源或详细的答案来帮助我理解这些内容。
- 要找出安装的gem的位置,在terminal中运行
echo $GEM_HOME
。 - 在使用RVM时,在更改$ GEM_HOME时,gem会安装到您的RVM安装中。 现在运行
echo $GEM_HOME
会在你的RVM安装中显示一个path。 - 当Bundler添加到混合中时,gem将被安装在
$GEM_HOME
,或者如果在运行bundle install
时指定了一个path,它将被安装到该path中。 要通过Bundlerfindgem的位置,您可以使用bundle show gemname
来获取其完整path。
使用gem env
列出每个上下文中的gempath。
没有RVM gem env
会报告系统gem库的path。
使用RVM gem env
将报告RVMpipe理的gem库path。
Bundlerpipe理应用程序依赖关系并安装到您的环境中的gem库中。 如果您使用RVM + Bundler,那么gem将安装在RVMpipe理的gem目录中。 如果你在没有RVM的情况下使用它,bundler会在系统的gem目录下安装gems。
要find安装gem的path,请使用:
gem which gem_name
要find可执行文件(如html2haml)使用:
which executable_name
为了避免inputBundler团队推荐的bundle exec html2haml
,使用我的rubygems-bundler gem。
我也试图了解它是如何工作的。 博客“ 关于在开发中使用Ruby,RVM,Passenger,Rails,Bundler,…的build议 ”帮助我更好地概览。
顺便说一句,这是一个法国文章的翻译,法文版更好。