2011-03-08 68 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以匹配節儉版本。