小编Raj*_*lan的帖子

如何迭代数组一定次数?

array = [apple, orange]    
number = 4
Run Code Online (Sandbox Code Playgroud)

所需的输出:

apple    
orange    
apple    
orange
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有:

array.each do |x|
  puts x
end
Run Code Online (Sandbox Code Playgroud)

我只是不确定如何遍历数组 4 次。

ruby arrays iteration loops

8
推荐指数
2
解决办法
510
查看次数

Ruby 避免“类方法”并保持其类型系统简单优雅的秘密技巧

来自维基教科书的Ruby 编程/概述

\n
\n

当我说每个 Ruby 对象都有一个类时,我撒了谎。事实上,每个对象都有两个类:\xe2\x80\x9cregular\xe2\x80\x9d 类和单例类。object\xe2\x80\x99s 单例类是一个无名类,其唯一实例是该对象。每个对象都有自己的单例类,与对象一起自动创建。Singleton 类继承自它们的 object\xe2\x80\x99s 常规类,并且最初是空的,但您可以打开它们并向它们添加方法,然后可以在属于它们的单独对象上调用这些方法。This is Ruby\xe2\x80\x99s secret trick to avoid \xe2\x80\x9cclass methods\xe2\x80\x9d and keep its type system simple and elegant

\n
\n

上面这段话讲述了 Ruby 避免使用类方法的秘密技巧。我不明白作者在这里的意思。Ruby 在哪里阻止我们避免类方法?举个例子,看看下面的例子

\n
class Raj\n  def self.hi\n    puts \'Hi\'\n  end\n  def hello\n    puts \'hello\'\n  end\nend\n\nobject=Raj.new\n\nobject.hello\nRaj.hi\n
Run Code Online (Sandbox Code Playgroud)\n

正如您在前面的示例中看到的,仍然可以创建类方法。\n是吗?\n我知道 Ruby 中没有真正的类方法;相反,它们是为 Raj 对象创建的方法。\n但是,无论如何,它都允许我创建方法\'hi,\',对吗?\n那么,当它说\n时,它意味着什么? “这是 Ruby 避免“类方法”并保持其类型系统简单而优雅的秘密技巧”?

\n

ruby

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

从今天起在 ruby​​ 中获取接下来 7 天名称的数组

嗨,我想从今天开始形成一个接下来 7 天的数组,例如:假设今天是星期天,所以结果应该是

["Sunday","Monday","Tuesday",'Wednesday","Thursday","Friday","Saturday"]
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails ruby-on-rails-6

5
推荐指数
3
解决办法
247
查看次数

如何找到 Rspec 中每个测试用例所花费的时间

我在我的项目中使用 Rspec,我想打印每个测试用例所花费的时间,有没有什么方法 Rspec 提供任何预构建函数?我可以获取测试用例的开始时间,example.execution_result.started_at但我不知道如何获取测试用例的结束时间,如果我可以获取结束时间,那么我可以从开始时间中减去结束时间来获取每个测试用例的持续时间测试用例。在这个地方有人帮助我吗?我写了这段代码

around(:each) do |example|
  startTime=Time.now
  var=example.run
  puts var
  endTime=Time.now
  duration=endTime-startTime
  puts "Time Taken->#{duration.to_f/60.to_f}"
end
Run Code Online (Sandbox Code Playgroud)

但我坚信 Rspec 必须提供一些预定义的方法来返回每个测试用例的持续时间,你有人知道吗?

ruby rspec watir capybara

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

Watir,通过自定义属性定位元素

我正在使用 Watir 6.16,我遇到了这行代码

<div data-guid="SearchTitle" class="acme"></div>
Run Code Online (Sandbox Code Playgroud)

不知道如何在 Watir 中找到这样的元素,我已经尝试过 -

element(:search_title, custom_attribute: "SearchTitle")
Run Code Online (Sandbox Code Playgroud)

但这没有返回任何内容,所以我被迫使用 xpath 还是还有其他方法?

凯夫

ruby testing selenium automation watir

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

为什么 self.method_name 无法访问私有方法?其中只有 private method_name 可以在任何方法中访问 ruby​​ 中的私有方法

class Person
  def one
    @var = 99
    self.two
  end
  private
  def two
    p @var
  end
end
p=Person.new
p.one
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我收到错误 main.rb:4:in one': private method Two' Called for #<Person:0x00000000965a28 @var=99> (NoMethodError)
from main.rb:12:in `'

class Person
  def one
    @var = 99
    two
  end
  private
  def two
    p @var
  end
end
p=Person.new
p.one
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到的输出为 99。因此,当 p.one 调用时,它会转到方法一,当它找到没有任何接收者对象的方法二时执行它(这意味着方法二将 self 作为对象)并且成功执行该方法。

但是当我手动给出 self.two 时,它给了我错误,为什么?

两个 VS self.two 的方法调用有什么区别?

ruby

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

为什么模块内的 ruby​​ 类不能与常规类具有相同的作用域?

我有一个内部有类的模块,但我发现如果不指定模块路径,内部类无法访问封闭模块中的任何方法。

另一种看待它的方法是 module_function 似乎没有带入类中。

例子:

module MyMod
  def meaning
    42
  end

  class Foo
    def initialize
      puts "New Foo"
      puts "I can call #{MyMod.meaning} from here"
      puts "But I can't get to #{meaning} from here"
    end
  end

  def go
    puts "I can get to #{meaning} from here"
    bar = Foo.new
  end

  module_function :go, :meaning
  go
end
Run Code Online (Sandbox Code Playgroud)

如果运行此命令,您会在“但是我不能...”行中收到错误:

undefined local variable or method `meaning'
Run Code Online (Sandbox Code Playgroud)

但是,如果删除整个文件周围的 MyMod 位,则访问外部方法就没有问题。

有没有一种简单的方法可以让这些访问而无需提供完整路径?

(我对不包含完整路径吹毛求疵的原因之一是因为我使用http://redshift.sourceforge.net/script/来创建我可以实例化的 ruby​​ 脚本 - 而且它们没有清晰而简单的名称,例如“MyMod”,我可以将其添加到路径中,实际上我必须传递范围,即使它只是类的封闭范围)

ruby scope

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

创建Firefox配置文件并关闭牵线木偶

我来自Ruby背景,我知道如何在Ruby Selenium Binding中做到这一点,但我不知道怎么做Java Selenium Binding,

我有这个代码来创建Firefox配置文件

 FirefoxProfile firefoxProfile = new FirefoxProfile(pathToProfile);
 WebDriver driver=new FirefoxDriver(firefoxProfile);
Run Code Online (Sandbox Code Playgroud)

它适用于selenium 2.53但它在最近的selenium绑定3.11.0中引发了错误,有人能告诉我什么是替代方案吗?

而且我还想关掉牵线木偶以连接到Legacy Firefox驱动程序,我可以使用以下代码执行此操作

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", false);
WebDriver driver=new FirefoxDriver(capabilities);
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用上面的行,那么它就会弃用FirefoxDriver.任何人都可以指导我如何创建配置文件以及如何关闭牵线木偶?

java selenium selenium-webdriver

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

用最后一个下划线拆分字符串

我有一个像"a_b_c""a_b_c_d"或字符串"a_b_c_d_e".我想在最后一个下划线处拆分字符串.

**input**
'a_b_c'
**output**
a_b
c

**input**
'a_b_c_d'
**output**
a_b_c
d
Run Code Online (Sandbox Code Playgroud)

我做了以下事情:

a='a_b_c'
a=a.split('_')
last=a.pop
a.delete(last)
p a.join("_")
p last
Run Code Online (Sandbox Code Playgroud)

并取得了成果,但我认为不应该这样做.我希望有一些正则表达式来实现这一目标.有没有人可以帮我这个?

ruby string

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

用字符串替换变量

我有这样的字符串

p="23232"
str="policy var=p saved" #It could be p or a or b, any variable.
Run Code Online (Sandbox Code Playgroud)

我想用var = p代替p的值,但是我找到了用var = p代替p的方法。

p="23232"
str="policy var=p saved"

p str.gsub(/var=(.)/,"\\1")
Run Code Online (Sandbox Code Playgroud)

这段代码将var = p替换为p,但我想用var = p代替p的值,例如

输出

policy 23232 saved
Run Code Online (Sandbox Code Playgroud)

我知道可以通过给gsub块来实现,但是我不知道如何。

ruby

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