रेल विकास पर्यावरण में कैसे ठोकरें?

मैं अपने विकास पर्यावरण में गतिशील रूप से कुछ तरीकों को रोकने के लिए एक विश्वसनीय तरीका ढूंढ रहा हूं। एक उदाहरण का उपयोग मामला तब होता है जब मुझे विकास करने की आवश्यकता होती है जिसे आम तौर पर फेसबुक ग्राफ एपीआई तक पहुंच की आवश्यकता होती है लेकिन मेरे पास इंटरनेट का उपयोग नहीं है। मैं fb_graph विधियों को कॉल को स्टब करने में सक्षम होना चाहता हूं, ऐसा लगता है कि मैं प्रमाणीकृत हूं और प्रोफाइल डेटा है। आदर्श रूप से मैं एक मामूली कॉन्फ़िगरेशन परिवर्तन के साथ स्टब्स चालू या बंद कर सकता हूं।

कोई विचार? मुझे लगता है कि मोचा जैसे कुछ इसे संभाला जा सकता है?

1
जोड़ा संपादित
विचारों: 1

2 उत्तर

आप वीसीआर मणि का उपयोग कर सकते हैं जो एक प्रारंभिक HTTP अनुरोध के परिणामों को एक yml फ़ाइल में रिकॉर्ड करेगा और फिर उस HTTP फ़ाइल अनुरोधों पर उस xml फ़ाइल की सामग्री का उपयोग करेगा। इसके बाद वीसीआर तर्क को अनदेखा करने के लिए कॉन्फ़िगर किया जा सकता है और यदि वांछित हो तो हमेशा HTTP अनुरोध करें:

https://www.relishapp.com/myronmarston/vcr

1
जोड़ा

मोचा निश्चित रूप से ऐसा कर सकता है। लेकिन यह थोड़ा अजीब लगता है।

आप निर्भरता इंजेक्शन की तरह कुछ भी कर सकते हैं।

उदाहरण के लिए:

class User < AR::Base

  def find_friends
    Facebook.find_friends(facebook_id)
  end

end

class Facebook

  def self.find_friends(id)
    # connect to Facebook here
  end

end

class FakeFacebook

  def self.find_friends(id)
    # a fake implementation here
  end

end

और एक प्रारंभकर्ता के अंदर:

if Rails.env.development?
  User::Facebook = FakeFacebook
end
1
जोड़ा