2012-06-15 29 views
3

正在以下過時的警告紅寶石1.9.3-P125當我運行rspec的。但是,在Ruby 1.9.2中沒有棄用的警告。的iconv將在未來被廢棄,用String#編碼,而不是

/gems/[email protected]/gems/soap4r-1.5.8/lib/xsd/iconvchars 
et.rb:9:in `<top (required)>': iconv will be deprecated in the future, use String#encode instead. 
/home/ec2-user/.rvm/gems/[email protected]/gems/hpricot-0.8.2/lib/hpricot/build 
er.rb:2:in `require': /gems/[email protected]/gems/hpricot-0 
.8.2/lib/fast_xs.so: undefined symbol: ruby_digitmap - /gems/ 
[email protected]/gems/hpricot-0.8.2/lib/fast_xs.so (LoadError) 

這是什麼原因?有人可以幫助這個。

回答

7

有是Ruby 1.9.3到stdlib之間移動到寶石的建議。作爲此轉換的一部分,不同字符串編碼之間的轉碼將被「gemified」,請參閱Wiki(部分:哪些stdlib應該被gemified?)。

因此每一次的iconv被調用時,棄用通知書將顯示,以通知紅寶石的未來版本將不使用的lib /的iconv並告訴他們,(凡)代碼的修改是必要的開發者說明這些計劃的變化。

現在這是沒有問題的,因爲兩者的iconv和字符串#編碼將爲了給開發者的時間,使過渡的支持。但是您應該記住,如果您不切換棄用的代碼,那麼您的代碼將在未來的版本中中斷。

一個快速谷歌搜索將幫助你完成過渡,例如「如果有必要,從Iconv#iconv到String#encode」。如果你不打算做出這樣的改變,你應該遠離未來的版本,並且在更新你的env時要格外小心。

+0

感謝您的回覆!我如何才能啓動瘦Web服務器。我無法擺脫這個問題,它發生在我們不擁有的寶石上。 - amala 1小時前 – diya

+0

有一個命令行標記'-w',您可以使用它來控制錯誤報告。你的情況應該是'-w0',它忽略了所有的警告。但要小心,因爲所有的錯誤都被壓制了! – dbrumann

+0

我嘗試使用這樣的命令 - 瘦啓動-p 3010 -w0 -d,但問題仍然保持不變。瘦Web服務器沒有開始。 – diya

3

的日誌條目告訴你,問題是在SOAP4R寶石產生。 它看起來像沒有更新寶玉一會兒,版本1.5.8是從2007年 所以它也可能有其他問題的紅寶石1.9.3。

有聲稱有ruby1.9兼容版本的一個項目: SOAP4R-ruby1.9

還有用於紅寶石其他SOAP庫,在這裏你看到其中的一些: ruby-toolbox search for soap

+0

感謝您的回覆!從你的信息,我試圖更新一個版本的soap4r gem [gem「soap4r-ruby1.9」,「〜> 2.0.5」]並重新啓動瘦服務器,但問題沒有解決!從日誌條目[/[email protected]/gems/soap4r-ruby1.9-2.0.5/lib/xsd/iconvcharset.rb:9:in'':iconv將將被棄用,請使用String#編碼。] >>正在退出!/[email protected]/hpricot-0.8.2/lib/hpricot/builder.rb:2:在'require'中: /[email protected]/gems/hpricot-0.8.2/lib/fast_xs.so:undefined symbol:ruby_digitmap - /[email protected]/hpricot-0.8.2/lib/fast_xs的.so(LoadError) – diya

3

你的問題實際上是使用hpricot,顯然它與ruby 1.9.3不兼容,並且拋出了你在這裏看到的「undefined symbol:ruby_digitmap」。這裏是someone else with the same problem

不幸的是,hpricot is no longer maintained,所以除非有人拿起披風,否則可能不會有修復。你的主要選擇似乎是堅持使用紅寶石1.9.2,或找到一個替代hpricot。大多數人似乎使用nokogiri進行Ruby和XML解析,但肯定還有其他選擇。

0

要消除此警告...

去你.rvm目錄,找到iconv.c(我的是在~/.rvm/src/ruby-1.9.3-p125/ext/iconv/iconv.c

編輯該文件被刪除或註釋掉調用warn_deprecated()(應接近底部)

從該文件所在的目錄,運行ruby extconf.rb然後make然後make install

應該做的技巧