小编Yux*_*hen的帖子

确定ruby中对象的类型

我将使用python作为我正在寻找的示例(如果您不了解Python,可以将其视为伪代码):

>>> a = 1
>>> type(a)
<type 'int'>
Run Code Online (Sandbox Code Playgroud)

我知道在红宝石中我能做到:

1.9.3p194 :002 > 1.class
 => Fixnum 
Run Code Online (Sandbox Code Playgroud)

但这是确定对象类型的正确方法吗?

ruby types

338
推荐指数
6
解决办法
41万
查看次数

Ruby相当于生成相同输出的JavaScript的encodeURIComponent?

嗨,有一个等效的ruby方法的JavaScript encodeURIComponent方法?我正在使用它URI.unescape(str)但它识别 "£"(在encodeURIComponent它变成之后"%C2%A3")作为"?"标志.任何解决方案?谢谢

javascript ruby encode escaping

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

Capybara需要睡觉吗?

根据网页更新,显然,sleepwait_until使用最新版本的Capybara无效.

但是,如果我添加sleep(1)对测试的调用,我有一组只能在快速机器上运行的测试.也就是说,测试看起来像:

describe "dosimeters page" do
  before do
    click_link("Dosimeter Read History", :match=>:first)
  end
...
Run Code Online (Sandbox Code Playgroud)

describe "dosimeters page" do
  before do
    unix_wait
    click_link("Dosimeter Read History", :match=>:first)
  end
...
Run Code Online (Sandbox Code Playgroud)

在那里我定义unix_wait为:

def unix_wait
  case RbConfig::CONFIG['host_os']
  when /darwin/
  when /linux-gnu/
    sleep(1)
  end
end
Run Code Online (Sandbox Code Playgroud)

问题是,我有一台旧的Ubuntu 12.04四核笔记本电脑在Jenkins上运行这些测试,一切都运行良好,没有unix_wait电话.测试在运行Ubuntu 13.10和macbook pro笔记本电脑的六核桌面上随机失败,但是如果我添加了unix_wait调用,那么测试就会通过.

测试失败本身表示加载失败(即某些运行中缺少css元素,但其他运行中没有),并且当手动加载站点时,被测试的内容实际上有效.

那么这里适当的行动是什么?显然,sleep测试期间不允许,也不允许wait_until.然而,睡眠是有效的,但它对我来说似乎非常粗糙.我应该看看#synchronized吗?从我从那些博客文章中收集的内容来看,当我打电话时,它已经被调用click_link,并且测试仍然失败.

这里接受的协议是什么?

我应该补充一下,因为我认为这很重要:这些都是javascript测试.我正在使用基于qt4(而不是qt5)的capybara-webkit.我正在考虑切换到poltergeist或其他一些javascript驱动程序作为调试步骤.

javascript sleep ruby-on-rails capybara capybara-webkit

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