Bundler - 无法加载完全相同 gem 的 2 个不同版本?
Bundler - cannot load 2 different versions of the exact same gem?
我在 how Bundler works 上看过这个演示文稿,发明 Bundler 的原因之一是解决 'activation errors',例如:
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 的 2 个不同版本?
您不能让同一个 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
,它应该是什么 return??
创建 bundler
等工具的原因之一是 防止 意外发生——所以不,你不能指定一个 [= 的 2 个不同版本24=] 同时加载。 (另外,我不认为你会想要那样做!)
另请参阅 this post,其中解释得更多一些。
我在 how Bundler works 上看过这个演示文稿,发明 Bundler 的原因之一是解决 'activation errors',例如:
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 的 2 个不同版本?
您不能让同一个 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
,它应该是什么 return??
创建 bundler
等工具的原因之一是 防止 意外发生——所以不,你不能指定一个 [= 的 2 个不同版本24=] 同时加载。 (另外,我不认为你会想要那样做!)
另请参阅 this post,其中解释得更多一些。