2012-06-15 49 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

应该做的技巧

相关问题