猴子用#to_ivar修补字符串

时间:2014-11-21 15:43:29

标签: ruby cucumber monkeypatching

我想用#to_ivar来修补字符串。

class String
  def to_ivar
    instance_variable_get("@#{self}")
  end
end

所以当我有一个像这样的实例变量的环境时:

instance variables:
  @__cucumber_runtime  @browser       @browser_type  @debug     @sauce_config  @user_A

我可以在步骤定义中执行此操作:

Given(/^user (.*) does something$/) do |user|
  @user = user.to_ivar
...
end

所以我做了,但是,似乎String#to_ivar不知道实例变量:

    13: def to_ivar
 => 14:   binding.pry
    15:   instance_variable_get("@#{self}")
    16: end

    [2] pry("user_A")> instance_variables
     => []

是否有一种方法可以让String实例了解Cucumber世界及其实例变量?

0 个答案:

没有答案