2011-02-02 35 views
4

因此,我最近升級到1.9.2 Ruby,永久使用1.8.7(我想試用Rails 3)。在Ruby 1.9.2中使用SOAP和其他標準庫

時遇到的最大的問題就是沒有我的SOAP的需要聲明的工作...我有事情,如:

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:[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的標準SOAP庫(又名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,須藤最後的命令......而不是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 answers所建議的那樣,您可能希望切換到像savon這樣的gem。

+0

「而不是su成根和RVM紅寶石1.9」。 Root在正常的RVM配置中不會有「rvm」命令。 「rvm」命令將被隔離到用戶的`〜/ .rvm`沙箱。此外,除非它是系統範圍的RVM安裝,否則不應使用root權限或[「sudo」(http://rvm.beginrescueend.com/rubies/rubygems/)。所以輕輕一點。 – 2011-02-03 00:03:50

1

,如果你想用鋼軌

寶石 'SOAP4R' 3更新你的寶石文件:混帳=> '混帳://github.com/felipec/soap4r.git'

此更新修復。

相關問題