我在how Bundler works上看过这个演示文稿,而Bundler被发明的原因之一就是解决'激活错误',例如:
LoadError: can't activate rack (~> 1.0.0, runtime) for ['actonpack-2.3.5'], already activated rack-1.1.0 for ['thin-1.2.7']
这基本上意味着你不能在一个Ruby进程中同时运行两个完全相同的gem的不同版本吗?
答案 0 :(得分:3)
您不能让同一个gem的两个不同版本加载相同的程序,因为它们可能会冲突并覆盖彼此的方法。例如,假设您有一个包含以下内容的gem:
# In gem version 1.0
class AneMaria
def self.name
"Ane"
end
end
######
# In gem version 2.0
class AneMaria
def self.name
"Maria"
end
end
然后在你的代码中,如果你调用AneMaria.name
,它应该返回什么?
创建像bundler
这样的工具的原因之一是阻止意外发生 - 所以不,你不能指定2个不同版本的gem同时加载。 (另外,我认为你不会想那样做!)
另见this post,它解释了一些事情。