Gemfile 中相同 gem 的不同版本 - 可能吗?

Different versions of the same gem in Gemfile - possible?

我有 2 个 gem:

gem 'A'
gem 'B'
gem 'C'

gem 'X'

gems A、B 和 C 具有 gem X 的依赖性。gem X 只是 恰好 在 Gemfile 中,不在 Gemfile.lock 中,因为它本身在整个应用程序中使用。

但是,A 和 B(实际上还有其他 gem)需要 X 的版本 1,而 C 和只有 C 需要版本 2。我怎样才能让他们使用 不同 版本的 X?

这可能行不通。无论如何...您如何期望您的 A 和 B gem 使用 X gem 的版本 1,而 C 使用版本 2?

另一件事是,如果版本 1 定义了 class,而版本 2 定义了相同的 class,但覆盖了 v1 方法,那么 "final class code" 将取决于加载订单。

不,在捆绑器中是不允许的

实际上您可以在 ruby 文件中指定对 gem 'X', '1' 的调用,但强烈不推荐这种方法,因为会引入如上所述的冲突。