Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在Rails开发环境中存根?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 如何在Rails开发环境中存根?

Ruby on rails 如何在Rails开发环境中存根?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在寻找一种可靠的方法,在我的开发环境中动态地存根某些方法。一个示例用例是当我需要进行开发时,通常需要访问Facebook Graph API,但我无法访问互联网。我希望能够存根对fb_图方法的调用,这样看起来好像我已经过身份验证,并且拥有配置文件数据。理想情况下,我可以通过一个小的配置更改来打开或关闭存根 有什么想法吗?我假设像摩卡咖啡这样的东西可以处理这个问题?摩卡咖啡当然可以。但感觉有点奇怪 你也可以做一些类似依赖注入的事情 例如: class User < AR::Base

我正在寻找一种可靠的方法,在我的开发环境中动态地存根某些方法。一个示例用例是当我需要进行开发时,通常需要访问Facebook Graph API,但我无法访问互联网。我希望能够存根对fb_图方法的调用,这样看起来好像我已经过身份验证,并且拥有配置文件数据。理想情况下,我可以通过一个小的配置更改来打开或关闭存根


有什么想法吗?我假设像摩卡咖啡这样的东西可以处理这个问题?

摩卡咖啡当然可以。但感觉有点奇怪

你也可以做一些类似依赖注入的事情

例如:

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

您可以使用VCR gem,它将初始HTTP请求的结果记录到yml文件中,然后在后续HTTP请求中使用该yml文件的内容。然后,如果需要,可以将其配置为忽略VCR逻辑并始终发出HTTP请求:

if Rails.env.development?
  User::Facebook = FakeFacebook
end