Har*_*Wit 19 rubygems ruby-on-rails
我可以在一个应用程序中使用两个版本的gem吗?我正在尝试使用两个rails插件一起工作:
当我尝试在rails中的东西时,我收到此错误消息:
$ rails server
c:/Ruby187/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/resolver.rb:129:in `resolve': Bundler could not find compatible versions for gem "oauth": (Bundler::VersionConflict)
In snapshot (Gemfile.lock):
oauth (0.4.4)
In Gemfile:
linkedin depends on
oauth (~> 0.3.5)
Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.
Run Code Online (Sandbox Code Playgroud)
尝试捆绑更新只会冻结我的终端
是否可以同时使用这两个插件?
Ars*_*en7 13
使用单个gem的两个版本通常意味着:使用同一类的两个版本.
如果不对这些宝石进行修改,这是不可能的.您可以尝试将创建的类放在某个模块中,解决导入到其他类中的方法中的冲突,等等.一般来说,这不是一件容易的事,通常效果不值得.
在这种情况下你应该做的是要求gem维护者更新依赖关系,或者尝试自己做.
也许你可以将这些宝石中的一个降级(使用旧版本)到依赖关系相同的版本.
不幸的是,在 Ruby 中,唯一的方法是修复(原文如此!)这些 gem,因此它们使用兼容的依赖项。
一般来说,当用 Ruby 构建复杂的软件并遇到这种情况时,我们(Ruby 开发人员)无能为力。这确实很糟糕,因为 Ruby 的开发也必须关注这个问题。
人们必须忍受 Ruby 所谓的“宝石地狱”,而不是向客户提供新功能或更改请求。
“宝石地狱”的另一个主要特征是,最新发布的宝石并不总是好的。
其他编程语言可以选择处理这些类型的问题。只要搜索“java multiple versions of same class”,你就会发现很多资源。
对于较小类型的应用程序,我可以建议:
当以上不是一个选项时,我可以为更大类型的应用程序建议:
将您的应用程序拆分为几个较小的应用程序、服务。这会将它们分开,从而降低“宝石地狱”的风险。如果发生这种情况,很可能并不是所有人都发生这种情况。此外,不同的应用程序可以使用不同的 gem 版本。
切换到 JRuby,理论上这些问题可以通过 Java 功能来解决。
归档时间: |
|
查看次数: |
5336 次 |
最近记录: |