Ruby 如何使实例变量在世界模块中可用?

Ruby 如何使实例变量在世界模块中可用?,ruby,cucumber,Ruby,Cucumber,我有: @user在步骤中定义。当我调用它时,我得到一个错误,因为@user是nil 注意:如果我将代码更改为@user.should\u not \u nil,则不会出现异常 如何让Cucumber实例变量在世界上的模块中可用?这是否有效 module A H = { c: @user } def b H.fetch(:c).should_not be_nil end end World(A) 以下是Matt Wynne在Cucumber邮件列表中的回复: 这个代码没有

我有:

@user
在步骤中定义。当我调用它时,我得到一个错误,因为@user是nil

注意:如果我将代码更改为
@user.should\u not \u nil
,则不会出现异常

如何让Cucumber实例变量在世界上的模块中可用?

这是否有效

module A
  H = { c: @user }

  def b
    H.fetch(:c).should_not be_nil
  end
end
World(A)

以下是Matt Wynne在Cucumber邮件列表中的回复:

这个代码没有意义

module A
  H = { c: :@user }

  def b
    send(H.fetch(:c)).should_not be_nil
  end
end
World(A)
该行将在定义模块时运行。您要使用的@user实例变量尚不存在-它将仅在运行时存在

   H = { c: @user }