2011-02-02 3 views
4

그래서 최근에 1.9.2 Ruby로 업그레이드하여 영원히 1.8.7을 사용했습니다 (레일 3을 시험해보고 싶었습니다). (상기 볼 작동하지Ruby 1.9.2에서 SOAP 및 기타 표준 라이브러리 사용

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

에도 ftools, 그러나 나는 생각한다

나는 데 가장 큰 문제는 내 SOAP 아무도 문 작업이 필요 없다는 것입니다 ... 내가 좋아하는 일을 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

당신이, 당신이 https://github.com/spox/soap4r-spox을 시도 할 수 있습니다 (일명 soap4r)를 1.8의 표준 비누 라이브러리를 루비를 계속 사용하려면 ...

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를을하지 않습니다 마지막 명령 ... 대신 root로 su하고 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과 같은 보석으로 전환하고 싶을 수 있습니다. 이 업데이트된다 '//github.com/felipec/soap4r.git 자식'

자식 => :

+0

루비 1.9 내 비누와 관련된 대부분의 문제를 해결했다. Root는 일반적인 RVM 구성에서 "rvm"명령을 갖지 않습니다. "rvm"명령은 사용자의'~/.rvm' 샌드 박스와 격리됩니다. 또한 시스템 차원의 RVM 설치가 아니라면 루트 권한 또는 [ "sudo"를 사용해서는 안됩니다.] (http://rvm.beginrescueend.com/rubies/rubygems/). 그래서 가볍게 밟아 라. –

+0

감사합니다. 이것은 나에게 매우 유용하다. – vinothini

1

당신이 레일을

보석 'soap4r'와 3 업데이트 당신의 보석 파일을 시도하는 경우에, 수정.

관련 문제