Мне нужно опубликовать статьи в Wordpress через XMLRPC и перехватить любые исключения:
connection = XMLRPC::Client.new('mysite.com', '/xmlrpc.php', 80)
connection.call(
'metaWeblog.newPost',
1,
'user',
'password',
post,
true
)
Ошибка en:
C:/Ruby192/lib/ruby/1.9.1/rexml/parsers/baseparser.rb:441:in `rescue in pull': #<NoMethodError: undefined method `[]' for nil:NilClass> (REXML::ParseException)
C:/Ruby192/lib/ruby/1.9.1/rexml/parsers/baseparser.rb:341:in `pull'
C:/Ruby192/lib/ruby/1.9.1/rexml/parsers/streamparser.rb:16:in `parse'
C:/Ruby192/lib/ruby/1.9.1/rexml/document.rb:204:in `parse_stream'
C:/Ruby192/lib/ruby/1.9.1/xmlrpc/parser.rb:717:in `parse'
C:/Ruby192/lib/ruby/1.9.1/xmlrpc/parser.rb:460:in `parseMethodResponse'
C:/Ruby192/lib/ruby/1.9.1/xmlrpc/client.rb:421:in `call2'
C:/Ruby192/lib/ruby/1.9.1/xmlrpc/client.rb:410:in `call'
Я успешно поймал исключение с:
connection = XMLRPC::Client.new('mysite.com', '/xmlrpc.php', 80)
begin
connection.call(
'metaWeblog.newPost',
1,
'user',
'password',
post,
true
)
rescue REXML::ParseException
puts "Skipping error"
end
С сообщением все в порядке, статья в Wordpress.
Далее мне нужно было поймать исключение о доступности сайта (когда сайт недоступен)
Я пытался поймать исключение с помощью:
connection = XMLRPC::Client.new('notaccessibleSite.com', '/xmlrpc.php', 80)
begin
connection.call(
'metaWeblog.newPost',
1,
'user',
'password',
post,
true
)
rescue REXML::ParseException
puts "Skipping error"
rescue
puts "Others errors"
end
Но это не работает:
myscript.rb:47:in `rescue in makeRpc': uninitialized constant Object::REXML (NameError)
from myscript.rb:38:in `makeRpc'
from myscript.rb:62:in `block in postContent'
from myscript.rb:58:in `each'
from myscript.rb:58:in `postContent'
from myscript.rb:71:in `<top (required)>'
from -e:1:in `load'
from -e:1:in `<main>'
Есть предложения?