3

当我运行 rspec 时,我收到以下关于 ruby​​ 1.9.3-p125 的弃用警告。但是 ruby​​ 1.9.2 没有过时的警告。

/gems/ruby-1.9.3-p125@cs/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/ruby-1.9.3-p125@cs/gems/hpricot-0.8.2/lib/hpricot/build
er.rb:2:in `require': /gems/ruby-1.9.3-p125@cs/gems/hpricot-0
.8.2/lib/fast_xs.so: undefined symbol: ruby_digitmap - /gems/
ruby-1.9.3-p125@cs/gems/hpricot-0.8.2/lib/fast_xs.so (LoadError)

这可能是什么原因?有人可以帮忙吗?

4

4 回答 4

7

有一个关于 ruby​​ 1.9.3 将 stdlibs 移动到 gems 的建议。作为不同字符串编码之间的转换转码的一部分,将被“gemified”,请参阅Wiki(部分:哪些 stdlibs 应该被 gemified?)。

因此,每次调用 iconv 时,都会显示弃用通知,以通知开发人员未来版本的 ruby​​ 将不会使用 lib/iconv 并告诉他们(以及在何处)需要修改代码以解决这些计划变化。

现在这不是问题,因为 iconv 和 String#encode 都将得到支持,以便给开发人员时间进行转换。但您应该记住,如果您不切换已弃用的代码,您的代码将在未来的版本中中断。

如有必要,快速的 Google 搜索将帮助您进行转换,例如“从 Iconv#iconv 到 String#encode”。如果您不打算进行更改,您应该远离未来的版本,并且在更新您的环境时要格外小心。

于 2012-06-19T09:33:31.277 回答
3

您的问题实际上与 hpricot 有关,它显然与 ruby​​ 1.9.3 不兼容,并且正在抛出您在此处看到的“未定义符号:ruby_digitmap”。这是有同样问题的其他人

不幸的是,不再维护 hpricot,所以除非有人拿起地幔,否则可能不会有修复。您的主要选择似乎是坚持使用 ruby​​ 1.9.2,或者找到 hpricot 的替代品。大多数人似乎都在使用 nokogiri 在 ruby​​ 中进行 XML 和 HTML 解析,但当然还有其他选择。

于 2012-06-26T04:35:05.977 回答
3

日志条目告诉您问题是在soap4r gem 中产生的。看起来 gem 有一段时间没有更新了,版本 1.5.8 是从 2007 年开始的,所以 ruby​​ 1.9.3 可能还有其他问题。

有一个项目号称有ruby-1.9兼容版本:soap4r-ruby1.9

还有其他用于 ruby​​ 的 soap 库,在这里你可以看到其中的一些: ruby-toolbox search for soap

于 2012-06-21T12:33:30.977 回答
0

要删除此警告...

转到您的 .rvm 目录并找到iconv.c(我的在~/.rvm/src/ruby-1.9.3-p125/ext/iconv/iconv.c

编辑该文件被删除或注释掉调用warn_deprecated()(应该靠近底部)

从该文件的目录中,然后ruby extconf.rb运行makemake install

应该做的伎俩

于 2014-09-18T12:17:02.423 回答