小编Eri*_*k J的帖子

Ruby VCR gem会记录相同的请求

在我的黄瓜支持目录中,我在vcr.rb中有以下内容:

require 'vcr'

VCR.configure do |c|
  c.cassette_library_dir = 'fixtures/vcr_cassettes'
  c.hook_into :webmock
  c.ignore_localhost = true
  c.default_cassette_options = { record: :new_episodes }
end
Run Code Online (Sandbox Code Playgroud)

我正在对城市名称进行地理编码,从而调用Google Maps API.我正在尝试记录和存根这些请求,但它会将相同的请求记录到同一个yml文件中:

- request:
    method: get
    uri: http://maps.googleapis.com/maps/api/geocode/json?address=Miami,%20FL&language=en&sensor=false
    body:
      encoding: US-ASCII
      string: ''
    headers:
      Accept-Encoding:
      - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
      Accept:
      - ! '*/*'
      User-Agent:
      - Ruby
  # response...

- request:
    method: get
    uri: http://maps.googleapis.com/maps/api/geocode/json?address=Miami,%20FL&language=en&sensor=false
    body:
      encoding: US-ASCII
      string: ''
    headers:
      Accept-Encoding:
      - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
      Accept:
      - ! '*/*'
      User-Agent:
      - Ruby
Run Code Online (Sandbox Code Playgroud)

它是相同的URL和非常相同的请求,不应该VCR存根请求?每当我尝试搜索同一个城市时,如何防止我的规范访问API?

ruby rspec ruby-on-rails cucumber vcr

12
推荐指数
2
解决办法
5492
查看次数

如何使用Ruby Net :: FTP代理服务器?

我使用Net :: FTP ruby​​库连接到FTP服务器并下载文件.这一切都运行良好,但现在我需要使用出站代理,因为他们的防火墙白名单IP地址,我使用Heroku来托管该网站.我正在尝试新的Proximo附加组件看起来很有前途,但我不能让Net :: FTP使用它.

我在Net :: FTP文档中看到以下内容:

connect(host,port = FTP_PORT)

建立与主机的FTP连接,可选择覆盖默认端口.如果设置了环境变量SOCKS_SERVER,则通过SOCKS代理设置连接.如果无法建立连接,则引发异常(通常为Errno :: ECONNREFUSED).

但是尝试设置此环境变量,或设置ENV['SOCKS_SERVER'] = proximo_url也不起作用.有谁知道如何正确地做到这一点?它不一定是SOCKS代理,HTTP代理也可以,但我不确定Net :: FTP库是否支持这一点.

...经过一些研究......

我发现Net :: FTP会查找一个名为的类SOCKSSocket,我找到了这些文档.但我不能包括它.include 'socket'返回false,我很确定这意味着它已经加载了.

ruby ftp proxy ruby-on-rails net-ftp

6
推荐指数
1
解决办法
2020
查看次数

在文档就绪未提交后,通过Ajax加载Rails远程表单

我有一个远程表单使用,form_tag:remote => true从部分加载.当我像往常一样通过自己的视图加载表单时,它按预期工作.但是,在文档就绪后,我尝试通过AJAX在另一个页面上加载部分.当我尝试提交此表单时,没有任何反应.我已经尝试了常规提交按钮并致电form.submit().

是否有一些javascript初始化到Rails做的远程表单,我必须复制?或者还有其他事情发生在这里?

ajax jquery ruby-on-rails-3

5
推荐指数
1
解决办法
693
查看次数

带有参数hash的Ruby方法,默认值为:如何干?

我有一个initialize接受哈希来设置一些实例变量的方法.这基本上就是我要做的事情:

class Ad
  DEFAULT_PAGE = 'index'.freeze

  DEFAULT_CHANNEL = 'general'.freeze

  DEFAULT_AREA = 'general'.freeze

  attr_accessor :page, :area, :channel

  def initialize args={}
    @page = args[:page] || DEFAULT_PAGE
    @area = args[:area] || DEFAULT_AREA
    @channel = args[:channel] || DEFAULT_CHANNEL
  end

  # ...
end
Run Code Online (Sandbox Code Playgroud)

我看到了一个允许动态设置实例变量的提示,但我不确定如何也包含默认值...

  def initialize args={}
    args.each do |attr,val|
      instance_variable_set("@#{attr}", val) unless val.nil?
    end
  end
Run Code Online (Sandbox Code Playgroud)

我可以动态地引用一个常量吗?或者欢迎任何更好的方式做这种事情!

......我也意识到attr_accessor变量可以单独设置.但我只是想这样做.:)

ruby hash ruby-on-rails

3
推荐指数
1
解决办法
5086
查看次数

是否有AngularJS数据更新回调?数据更改时如何手动更新页面?

我浏览了AngularJS教程,它非常整洁.我也深入研究了Backbone和Ember.js(虽然不完全熟悉)但我听到很多赞美AngularJS,我想知道它是否适合我.

我有一个专注于大型Google地图的网站(想想像Padmapper.com这样的东西).目前在页面加载后通过JSON加载的2,000多辆汽车,JSON需要1-2秒才能到达.然后根据汽车位置使用标记填充地图.我有一个过滤器表单,用户可以根据许多不同的属性过滤汽车(让我们只说颜色,汽油量等).目前提交此过滤器表单会在后端查询过滤器,然后返回过滤后的汽车.这是浪费大量时间.

我想在初始化时加载所有项目,然后在更改值时使用前端进行过滤.在AngularJS教程中,当我在过滤器框中键入时,项目会显示和消失.很酷.但是我该如何处理地图标记?如何定义回调函数以在地图标记进入后手动更新它们?我需要以某种方式使用自定义指令吗?(还不完全确定这些是做什么......)

我可以想到jQuery中的一个解决方案,即有一个无序的汽车列表,观察它的变化,并根据需要隐藏/显示标记.但我正试图摆脱jQuery.任何帮助表示赞赏!谢谢!

javascript angularjs

2
推荐指数
1
解决办法
2926
查看次数

如何在 irb 或日志中隐藏 Ruby 对象实例变量?

我正在制作一个宝石来包装 API。该服务需要一些登录参数,因此我创建了一个 Connection 类,通过传入所有登录值并与实例变量一起存储来进行初始化。@secret_access_key显然,这些价值之一是秘密的。它在应用程序中不可读。但是在 irb 中测试 gem 时,我看到在返回对象时与所有其他实例变量一起显示的密钥。

mws = MWS::Connection.new :access_key => '1', :secret_access_key => 'SECRET!!!', :merchant_id => '3', :marketplace_id => '4'
 => #<MWS::Connection:0x007fbd22acef40 @access_key="1", @merchant_id="3", @marketplace_id="4", @secret_access_key="SECRET!!!">
Run Code Online (Sandbox Code Playgroud)

我很担心密钥会出现在 Heroku 日志、应用程序错误消息或其他任何内容中。

我应该担心吗?如果是这样,存储或隐藏此信息的最佳方法是什么?

另外,我正在使用 httparty gem 来管理这个,我可以用那个 gem 做些什么更好的事情?

ruby gem httparty

1
推荐指数
1
解决办法
1962
查看次数