Savon выдает ошибку внутри приложения Rails, но не внутри irb

#ruby-on-rails #ruby #soap #savon #httpi

#ruby-on-rails #ruby #soap #savon #httpi

Вопрос:

Я использую библиотеку Savon, чтобы заставить работать некоторые запросы SOAP. И я использую почти один и тот же код в приложении IRB и Rails. Когда я запускаю IRB, все работает как надо, но Rails генерирует ошибку «нет метода ‘to_hash’ для nil: NilClass» внутри do_request -> respond_with методов savon.

Вот мой код (такой же при запуске в IRB или Rails):

   # setup Savon client for SOAP requests
  client = Savon::Client.new "http://www.webservicex.net/country.asmx?WSDL"

  # test if "webservicex.net" server is up and running
  actions = client.wsdl.soap_actions

  raise "SOAP server is down" if actions.nil? or actions.length <= 0

  # get country list
  resp = client.request :get_countries

  raise "No response for countries" if resp.nil?

  resp = resp[:get_countries_response][:get_countries_result]
  

Ни одно из этих исключений не возникает, и код, находящийся дальше, чем «pinging server», не выполняется.

Что не так и как я могу это исправить?

Ответ №1:

Это проблема с httpi gem — https://github.com/rubiii/savon/issues/163 Просто используйте 0.9.1 версию.