Ошибки Ruby soap4r wsdl2ruby.rb

#ruby #rubygems

#ruby #rubygems

Вопрос:

Я пытаюсь запустить скрипт wsdl2ruby.rb, который поставляется с драгоценным камнем soap4r, и получаю следующие ошибки:

 [ral@lap etc]$ ruby /usr/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/bin/wsdl2ruby.rb
/usr/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/xsd/charset.rb:13: warning: variable $KCODE is no longer effective
/usr/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/soap/property.rb:68: warning: encoding option is ignored - u
/usr/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/soap/property.rb:69: warning: encoding option is ignored - u
/usr/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/soap/property.rb:70: warning: encoding option is ignored - u
/usr/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/xsd/xmlparser.rb:74:in `<top (required)>': XML processor module not found. (RuntimeError)
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from /usr/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/xmlSchema/parser.rb:13:in `<top (required)>'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from /usr/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/xmlSchema/importer.rb:11:in `<top (required)>'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from /usr/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/importer.rb:9:in `<top (required)>'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from /usr/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/wsdl/soap/wsdl2ruby.rb:11:in `<top (required)>'
    from <internal:lib/rubygems/custom_require>:33:in `require'
    from <internal:lib/rubygems/custom_require>:33:in `rescue in require'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from /usr/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/bin/wsdl2ruby.rb:5:in `<main>'
  

У меня установлены следующие драгоценные камни:

httpclient (2.2.0.1) minitest (1.6.0) rake (0.8.7) rdoc (2.5.8) soap4r (1.5.8)

Я попытался установить gem-анализатор xml, который завершается неудачей с множеством ошибок:http://pastie.org/1822127

Кто-нибудь знает, в чем проблема? Я впервые прикасаюсь к Ruby.

Является ли soap4r лучшим инструментом для работы по созданию клиента веб-сервиса SOAP?

Большое спасибо!

Комментарии:

1. soap4r стареет. Я думаю, что большинство людей уже перешли на Savon. savonrb.com

Ответ №1:

Ответ, опубликованный на

http://railsforum.com/viewtopic.php?id=41231

у меня сработало. То есть я отредактировал файл rubyhome/lib/ruby/gems/1.9.1/gems/soap4r-1.5.8/lib/xsd /xmlparser.rb и изменил строку 66 из:

   c.downcase == name
  

Для

   c.to_s.downcase == name
  

и проблема, похоже, решена.

Ответ №2:

Вы также можете попробовать новое официальное репозиторий на Github, в котором есть это исправление, и другие, примененные к главной ветке. Вам нужно настроить ваш Gemfile на использование репозитория git как такового:

 gem 'soap4r', :git => 'git://github.com/felipec/soap4r.git'
  

Комментарии:

1. Не могли бы вы, изменив, просветить меня, как вы заставили Gem понимать префиксы git: // url? Я застрял с методом «fetch_git», отсутствующим в текущем gem