0
votes

Une fois que je peux faire ce "bloc d'emballage" en option de manière idiomatique / propre?

in Ruby, vous pouvez appeler une API distante comme celle-ci xxx

si vous faites gem installation gem , vous pouvez faire ce Xxx

enregistrement de magnétoscope / la lecture aide pendant le développement, quand L'API distante est chère. D'utiliser le magnétoscope ou non devrait être facultatif, indiqué Par le premier argument de la fonction: xxx

Ma question est, comment réécrire la méthode de sorte que "Block emballage" / "VCR.USE_Cassette (" Cassette_001 ") Faire "est conditionnel sur la valeur booléenne de la variable locale de devoir_use_vcr.

Je pourrais faire xxx

mais pour une méthode complexe qui a" Net :: Http.get ("plus une douzaine de lignes supplémentaires, il y a trop de duplication du code, Alors cherche une façon de le faire.


0 commentaires

3 Réponses :


-1
votes

Vous pouvez mettre le code dupliquer dans une méthode et appeler cette méthode enveloppée dans le magnétoscope de VCR ou sans magnétoscope.


2 commentaires

peut donner de l'aide ici?


@ American-ninja-guerrier je ne pense pas, mais mon ruby ​​est un peu rouillé. La création d'une méthode ne fonctionne pas avec le magnétoscope ou pourquoi demandez-vous sur le rendement?



0
votes

Vous pouvez essayer d'utiliser l'approche suivante:

def get_remote_date
  record_request { Net::HTTP.get('example.com', '/index.json') }
end

def record_request(&request)
  ENV['RECORD_REQUEST'] ? VCR.use_cassette("cassette_001", &request) : request.call
end


1 commentaires

Docs pour #call peut être trouvé Il .



0
votes

illustrant une solution à base de rendement, xxx


0 commentaires