如何更改我的某个宝石所依赖的宝石版本?

时间:2011-03-08 14:52:44

标签: ruby-on-rails ruby-on-rails-3 gem

我正在尝试使用evernote gem。它依赖于thrift gem

的Gemfile

gem 'evernote'

当我尝试使用它时,我收到此错误:

Thrift::ProtocolException in PagesController#the_lab 
No version identifier, old protocol client?
thrift (0.5.0) lib/thrift/protocol/binary_protocol.rb:122:in `read_message_begin'
thrift (0.5.0) lib/thrift/client.rb:45:in `receive_message'
evernote (0.9.0) vendor/gen-rb/evernote/edam/note_store.rb:97:in `recv_listNotebooks'

newer version of the thrift gem available,可以解决问题。当我尝试安装它时,我收到此错误:

的Gemfile:

gem 'evernote'
gem 'thrift', "~> 0.6.0"

控制台:

$ bundle install
Fetching source index for http://rubygems.org/
You have requested:
  thrift ~> 0.6.0

The bundle currently has thrift locked at 0.5.0.
Try running `bundle update thrift`

$ bundle update thrift
Fetching source index for http://rubygems.org/
Bundler could not find compatible versions for gem "thrift":
  In Gemfile:
    evernote depends on
      thrift (~> 0.5.0)

    thrift (0.6.0)

有没有办法可以改变evernote所依赖的节俭版本?

3 个答案:

答案 0 :(得分:3)

你可以'分叉evernote gem,更新它以使用适当版本的thrift然后在你的应用程序中使用它?

的Gemfile

gem 'evernote', :git => "https://github.com/your_username/evernote.git

如果相关,则发送cgs拉取请求。

答案 1 :(得分:1)

试试这个:

  1. 删除Gemfile中对thrift的引用
  2. 运行bundle update evernote
  3. 似乎最新版本的evernote不依赖于特定版本的节俭,所以这应该可以解决您的问题。如果没有,尝试在你的Gemfile中同时使用evernote和thrift并更新两者(这将导致你拥有两个宝石的最新版本)。

答案 2 :(得分:1)

叉子evernote gem&编辑你的gemfile来引用它。 编辑你的分叉evernote gem的.gemspec以匹配thrift的版本。