2009-10-30 1 views
1

J'ai une application Rails qui utilise l'API d'une autre application Rails via un fichier WSDL. Je voudrais mettre en cache une manière ou définir comme une constante de la « poignée » à l'API que je crée comme ceci:Mise en cache ou définition d'une constante globale pour l'accès WSDL

serv = SOAP::WSDLDriverFactory.new(APP_CONFIG['api_url']).create_rpc_driver 

Rechargement ce pour toutes les méthodes qui utilisent l'API est à la fois lent et pas très sec. L'API ne change pas très souvent, je voudrais juste créer le "handle" lors du lancement de l'application et toujours utiliser le même "handle" pour toutes les connexions.

Comment et où puis-je définir ce type de variable globale? Je sais que les constantes peuvent être définies dans environment.rb mais cela ne semble pas fonctionner si j'essaie de définir cette ligne là-bas, d'obtenir une sorte d'erreur de timeout.

Répondre

0

Je suggère d'utiliser l'utilitaire soap4r, wsdl2ruby.rb pour générer le pilote de savon et l'utiliser. Soap4r est l'une de ces bibliothèques bizarres qui sont à la fois dans la distribution Ruby 1.8.6 et disponibles en tant que gemme.

gem install soap4r 
wsdl2ruby.rb --help 

Vous voulez faire quelque chose comme ceci:

wsdl2ruby.rb --wsdl http://your/wsdl/url --type client 
+0

J'aime la configuration actuelle, cela fonctionne très bien. La seule chose que j'aimerais changer, si possible, est d'ignorer le rechargement du WSDL sur chaque requête. Votre suggestion signifierait que je devrais réexécuter wsdl2ruby chaque fois que l'API change (et peut-être même changer le code pour utiliser l'API?). – peku

Questions connexes