我想了解Ruby on Rails中的一个非常基本的概念。每次我创建一个新的Rails应用程序时,我都会创建一个 gemset ,然后将gems安装到该gemset。一旦我的朋友问我为什么这样做,我就无法让他明白地理解。
是不是因为如果我在同一个Ruby版本下有 2个项目,并且两个都需要特定gem的不同版本?假设两者都使用默认gemset ,它无法将此gem的两个版本都安装到默认的gemset,因为它会导致冲突?如果我错了,请纠正我。
答案 0 :(得分:2)
Gemsets对于制作独立的rails应用程序非常有用,其他rails应用程序(使用相同的ruby版本)不会在彼此之间共享宝石(因为它{{strong> 1}})
目前,使用gemsets是开销,因为:
gem bundler
很好地处理依赖关系gem bundler
gem pristine --all
,拥有自己的独立层只是不要使用gemsets
答案 1 :(得分:1)
通过gemset你的意思是RVM Gemsets对吗?来自系统和彼此的RVM Gemset分隔红宝石设置。如果您有多个Rails项目,这非常有用。每个项目可能需要不同版本的相同gem。
但是,如果您使用的是Bundler,则不需要使用RVM Gemsets。在bundle exec
之前添加任何命令将在项目的Gemfile上下文中执行。
<强>参考强>
答案 2 :(得分:0)
这是非常有趣的任务。
你可以认为gemset是=硬盘中的空间种类
我会告诉你完整的过程。
如果您有多个具有不同ruby版本的项目,那么我们需要使用rvm来避免冲突。 所以我们需要使用RVM(Ruby版本管理器)。 步骤进行:
1)安装rvm 2)安装rvm后我们需要使用ruby版本 例如:如果您的系统中安装了多个ruby,则选择其中一个
rvm - 默认使用版本
例如,您有2个项目使用ruby 1.9.X,其他项目使用2.0.X
所以在这种情况下,如果你没有使用rvm那么它可能会发生冲突,所以我们应该像下面一样创建新的gemset。
例: rvm gemset创建demo rvm gemset使用演示
所以目前我们正在指向gemset demo
现在我们已经安装了ruby,但是我们在这个gem中没有rails,所以我们必须在其中安装rails和其他gem。
所以结论是我们使用gemset来避免ruby版本之间的冲突。