2011-03-08 39 views
2

我正在尝试使用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的依赖?

+1

顺便说一句,错误“没有版本标识符,旧协议客户端?”来自Thrift,并且表明它不能根据它对指定对象的IDL解析响应。 – Don 2012-10-01 20:03:28

回答

3

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

的Gemfile

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

然后发送CGS pull请求,如果相关。

1

试试这个:

  1. 删除提及节俭在你的Gemfile
  2. 运行bundle update evernote

看来最新版本的Evernote不依赖于节俭的特定版本,所以应该解决你的问题。如果没有,请尝试在Gemfile中同时使用evernote和thrift并更新两者(这会导致您拥有这两个gem的最新版本)。

+0

是evernote 0.9.0的最新版本吗?这就是它在这个页面上显示的内容 - http://rubygems.org/gems/evernote。这正是我使用的,正如你可以从上面第二个代码块中的这行看到的那样:evernote(0.9.0)vendor/gen-rb/evernote/edam/note_store.rb:97:在'recv_listNotebooks' – ben 2011-03-09 23:30:52

+0

是的,0.9.0似乎是最新版本。但是,https://github.com/cgs/evernote的源代码并未指明特定的版本依赖性。也许尝试使用gem'evernote'在你的Gemfile中使用HEAD分支:git =>“https://github.com/cgs/evernote.git”' – 2011-03-09 23:37:38

+0

嘿大卫,谢谢你的帮助。尝试了你的建议,不幸的是发生了完全相同的错误。 – ben 2011-03-12 08:38:29

1

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