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 では stdlib を gem に移動するという提案があります。この移行の一環として、異なる文字列エンコーディング間のトランスコーディングは「gemified」になります。Wiki を参照してください(セクション: どの stdlibs should be gemified?)。

したがって、iconv が呼び出されるたびに deprecation-notice が表示され、将来のバージョンの ruby​​ では lib/iconv が使用されないことを開発者に通知し、これらの計画を考慮してコードの変更が必要であること (およびその場所) を伝えます。変化します。

開発者が移行する時間を確保するために、iconv と String#encode の両方がサポートされるため、今のところこれは問題ではありません。ただし、非推奨のコードを切り替えないと、将来のバージョンでコードが壊れる可能性があることに注意してください。

必要に応じて、「Iconv#iconv から String#encode へ」など、簡単な Google 検索で移行できます。その変更を行う予定がない場合は、将来のバージョンに近づかないようにし、環境を更新するときに特に注意する必要があります。

于 2012-06-19T09:33:31.277 に答える
3

あなたの問題は実際には hpricot にあり、これは明らかに ruby​​ 1.9.3 と互換性がなく、ここに表示されている「未定義のシンボル: ruby​​_digitmap」をスローしています。同じ問題を抱えている他の人がいます。

残念ながら、hpricot はもうメンテナンスされていないので、誰かがマントを拾わない限り、おそらく修正されることはありません。あなたの主な選択肢は、Ruby 1.9.2 に固執するか、hpricot の代替を見つけることです。ほとんどの人は、Ruby での XML および HTML の構文解析に nokogiri を使用しているようですが、確かに他のオプションがあります。

于 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 ライブラリがあります。ここにその一部を示します

于 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.rbmakeますmake install

トリックを行う必要があります

于 2014-09-18T12:17:02.423 に答える