capybara :: dsl :: module的未定义方法'委托'

时间:2014-11-24 16:43:40

标签: ruby selenium capybara

我有一个处理jquery-ui的水豚猴补丁,它在Ubuntu上运行得很好......虽然当移动到Windows时我得到以下错误(所有依赖宝石都安装成功):

capybara :: dsl :: module

的未定义方法'委托'

发生这种情况的代码行是:

module Capybara::DSL
  delegate :datepick, :datetimepick, :timepick, to: :page
end

这可能是什么想法?有点失去了为什么只是通过切换OS来显示这个错误...

1 个答案:

答案 0 :(得分:6)

标准ruby委托由模块Forwadable处理。您需要require然后extend forwardable来访问这些方法,如下所示:

require 'forwardable'
module Capybara::DSL
  extend Forwardable
  #notice syntax is accessor, *methods
  def_delegators :page, :datepick, :datetimepick, :timepick
end

您现在尝试使用的委派类型是活动支持Module类的一部分。如果您想使用此语法,请执行以下操作:

require 'active_support/core_ext/module'
module Capybara::DSL
  #active_support syntax allows a to: element in the hash to act as the accessor
  delegate :datepick, :datetimepick, :timepick, to: :page
end