Использование SOAP и других стандартных библиотек в Ruby 1.9.2 - PullRequest
4 голосов
/ 02 февраля 2011

Итак, я недавно обновился до 1.9.2 Ruby, всегда использовал 1.8.7 (я хотел попробовать Rails 3).

Самая БОЛЬШАЯ проблема, с которой я сталкиваюсь, заключается в том, что ни один из моих операторов SOAP require не работает ... У меня есть такие вещи, как:

 require 'soap/rpc/driver'
 require 'xsd/qname'
 require 'soap/wsdlDriver'
 require 'ftools'

Даже ftools не работает, но я ДУМАЮ (посмотрите на источник Ruby), что это стало 'fileutils'? Но я не вижу ничего подобного для SOAP ..... это было только что удалено?

Если так ... что мне делать? Есть ли плагины, которые делают по сути то же самое?

Мой код похож на:

 require 'soap/wsdlDriver'
     def send_package
     adi_url = "ftp://anonymous:ads123@#{APP_CONFIG['pcms_ip']}/#{self.id}/original/ADI.XML" 


     cl0 = SOAP::WSDLDriverFactory.new(APP_CONFIG['corba_bridge'])
     driver = cl0.create_rpc_driver
     driver.streamhandler.client.receive_timeout = 10
     x = driver.exportPackage2(self.name+self.id.to_s, adi_url, "NS2.PackageFactory")
     log x

     if x.to_s =~ /ERROR/
          raise x.to_s
     end
 end

и

 require 'soap/rpc/driver'
 require 'xsd/qname'
 def get_self_offering_ids(wsdl, namespace)
      ret = []
      input = {"#{namespace}:includeAssetMetadata" => 'true'}

      begin
           driver = SOAP::RPC::Driver.new(wsdl, namespace)
           driver.add_document_method('GetAllOfferingsRequest', "OpenStreamVOD#getAllOfferings", XSD::QName.new(namespace, "GetAllOfferingsRequest"), XSD::QName.new(namespace, "GetAllOfferingsResponse"))
           result = driver.GetAllOfferingsRequest(input)
      rescue => err
               log err                        
      end

      if result
           result.offering.each do |o|
                if offeringIsSelf?(o)
                   ret << o.xmlattr_offeringId
                end
           end 
      end

      return ret
 end

У меня нет большого опыта работы с мылом ... и я даже не уверен, что wsdlDriver и rpc / driver отличаются друг от друга ... просто у меня, вероятно, была хорошая причина для использования двух отдельных библиотек

Ответы [ 3 ]

8 голосов
/ 20 декабря 2011

https://rubygems.org/gems/soap4r-ruby1.9

gem install soap4r-ruby1.9

Этот драгоценный камень решил большинство моих проблем с мылом с помощью ruby ​​1.9

5 голосов
/ 02 февраля 2011

Если вы хотите продолжать использовать стандартную библиотеку мыла Ruby 1.8 (она же soap4r), вы можете попробовать https://github.com/spox/soap4r-spox ...

wget --no-check-certificate https://github.com/spox/soap4r-spox/tarball/1.5.8.4
tar -xzf spox-soap4r-spox-1.5.8.4-0-g345a6cb.tar.gz
cd spox-soap4r-spox-345a6cb/
ruby setup.rb all

Если вы используете rvm, не sudo последняя команда ... вместо su в root и от rvm до ruby ​​1.9, чтобы setup.rb поместил файлы в нужное место.

$ irb
ruby-1.9.2-p0 > require 'soap/rpc/driver'
 => true 
ruby-1.9.2-p0 > require 'xsd/qname'
 => false 
ruby-1.9.2-p0 > require 'soap/wsdlDriver'
 => true 
ruby-1.9.2-p0 > require 'fileutils'
 => true 

Как подсказывают другие StackOverflow отвечает , возможно, вы захотите переключиться на камень, подобный savon.

1 голос
/ 09 ноября 2011

если вы пытаетесь использовать rails 3, обновите файл gem с помощью

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

это обновлено с исправлением.

...