2011-02-02 1 views
4

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

Самая большая проблема у меня в том, что ни один из моих SOAP не требуют утверждения работают ... У меня есть такие вещи, как:

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

Even ftools не работает, но я думаю (смотреть на Ruby source), что это стало «fileutils»? Но я не вижу ничего похожего на SOAP ..... он просто удален?

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

Мой код, как:

require 'soap/wsdlDriver' 
    def send_package 
    adi_url = "ftp://anonymous:[email protected]#{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/водитель в любой разные ... просто у меня, вероятно, была веская причина использовать две отдельные библиотеки в то время?

ответ

5

Если вы хотите продолжать использовать стандартную библиотеку 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 to 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 answers, вы можете переключиться на драгоценный камень, как Савон.

+0

"вместо су в корень и РВМ в Ruby 1.9". Корень не будет иметь команду «rvm» в обычной конфигурации RVM. Команда «rvm» будет изолирована от песочницы '~/.rvm' пользователя. Кроме того, если это не является общесистемной установкой RVM, привилегии root или ["sudo" никогда не должны использоваться] (http://rvm.beginrescueend.com/rubies/rubygems/). Так что простерте слегка. –

+0

Спасибо. Это очень полезно для меня. – vinothini

1

если вы пытаетесь рельсов 3 обновления файла драгоценный камень с

жемчужину 'soap4r': мерзавец => 'мерзавца: //github.com/felipec/soap4r.git'

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