Posts Tagged ruby

ruby xmlrpc client

Mi sono ritrovato in questi giorni a dover scrivere un
client xmlrpc in ruby (per una applicazione rails, invero) e abituato a vedere queste cose funzionare in 5 minuti, mi sono perso quando ho visto che non funzionava.

Un client xmlrpc in ruby si scrive molto semplicemente più o meno così:

uri = "http://example_of_url:8000/"

server = XMLRPC::Client.new2(uri)

return = server.call('function')

Molto semplice, quindi, ma nel mio caso non funzionava con
il server xmlrpc a cui tentavo di connettermi. Eppure
questo server, scritto in erlang, funzionava: un client
xmlrpc in PHP infatti, riusciva a collegarsi senza problemi.

Poteva essere un problema del mio client, ma tentando
la connessione con altri server xmlrpc, funzionava correttamente.

Dove stava quindi il problema, che mi generava un “HTTP Error 415 – Unsupported media type”?

Il server xmlrpc scritto in erlang, confondeva il client ruby in quanto non forniva il Content-Type in modo corretto, o meglio, non lo forniva proprio. Per far funzionare il tutto, ho modificato le librerie ruby di xmlrpc, file

/usr/lib/ruby/1.8/xmlrpc/client.rb

riga 503, modificando:

"Content-Type"   => "text/xml; charset=utf-8",

in:

"Content-Type"   => "text/xml ",

e il file

/usr/lib/ruby/1.8/xmlrpc/utils.rb

nella funzione

parse_content_type

ho dovuto ridefinire str = “text/xml”. A questo punto, il client xmlrpc ha funzionato.

, ,

1 Comment

Typo trunk su ubuntu

Tenere un blog, non è il mio forte, si sa.

Ho avuto da fare in questo periodo e non ci sono stato dietro,
così non mi sono accorto che questo blog per un po’ non ha funzionato.

Il problema era ancora una volta Typo, questo maledetto, e la sua sporca compagna Rails, il vendicativo Ruby e il falso Mysql.

La versione che era precedentemente installata di Typo, non funzionava con Rails 1.1; questo non funzionava con Ruby 1.8.3; Rails vs Mysql non funzionava, se non con libmysql-ruby1.8; etc. etc.

Ho dovuto quindi aggiornare Typo alla versione ”trunk”, aggiornare Ubuntu all”ultima versione, installare libmysql-ruby1.8, rinunciare a fcgi, dare un colpo di `rake migrate RAILS_ENV=production`, reimpostare tutti i file con i permessi e l’owner giusti (lo erano già in teoria … boh), e ora, se leggete questo articolo va.
Ma che fatica.

Comincia a starmi sulle balle, dover essere aggiornato su tutte le combinazioni esatte di versioni dei vari programmi che devo avere, affinché tutto funzioni. Ma un minimo di retrocompatibilità, no, eh?
Qua, il software libero, è un po’ troppo “libero” :-)

, ,

No Comments