Использование SOAP и других стандартных библиотек в Ruby 1.9.2

Итак, я недавно обновился до 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 ... просто у меня, вероятно, была веская причина для использования двух отдельных библиотек в то время?


person J.R.    schedule 02.02.2011    source источник


Ответы (3)


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

person Seamus Abshere    schedule 02.02.2011
comment
вместо su в root и rvm в ruby ​​1.9. У Root не будет команды rvm в нормальной конфигурации RVM. Команда rvm будет изолирована от ~/.rvm песочницы пользователя. Кроме того, если это не общесистемная установка RVM, никогда не следует использовать права root или sudo. Так что действуйте осторожно. - person the Tin Man; 03.02.2011
comment
Спасибо. Это мне очень пригодилось. - person vinothini; 20.01.2012

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

гем установить soap4r-ruby1.9

Этот драгоценный камень решил большинство моих проблем, связанных с мылом, с Ruby 1.9.

person Ggmon    schedule 20.12.2011

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

драгоценный камень 'soap4r',: git => 'git: //github.com/felipec/soap4r.git'

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

person Vishnu Atrai    schedule 09.11.2011