Rails模型中不包含webdriver-user-agent gem类

时间:2014-12-09 13:50:02

标签: ruby-on-rails ruby rubygems watir-webdriver

当我尝试使用webdriver-user-agent gem时,我无法访问模块,更不用说它的方法了。

在Rails.root / Gemfile.lock中:

GEM
  remote: https://rubygems.org/
  specs:
    # ...
    watir-webdriver (0.6.10)
      selenium-webdriver (>= 2.18.0)
    webdriver-user-agent (7.1)
      facets
      json
      selenium-webdriver
    # ...

在Rails.root / app / models / some_model.rb中:

class SomeModel < ActiveRecord::Base
  def some_function
    driver = WebDriver::UserAgent.driver(browser: :firefox, agent: :iphone, orientation: :portrait)
    # other functionality ...
  end
end

加载环境

rails c

使用课程:

2.0.0-p353 :001 > s = SomeModel.last
2.0.0-p353 :002 > s.some_function
NameError: uninitialized constant SomeModel::WebDriver

Rails是否通过在SomeModel中查找模块而在错误的位置查找模块?我是否错误地访问了这个?该模块不可用:

2.0.0-p353 :003 > Webdriver::UserAgent
NameError: uninitialized constant WebDriver # corrected on edit

我尝试将require 'webdriver-user-agent'包含在类文件的顶部,然后include WebDriver - 同样的错误,但是在加载模型实例时。

我提交了a bug report in the repo,但我确定我在这里做了一些蠢事......

其他信息:

  • Centos 6.5
  • Rails 4.1.4
  • Ruby 2.0
  • Rubygems 2.2.2

1 个答案:

答案 0 :(得分:2)

您正在尝试寻找模块:

WebDriver

但是,webdriver-user-agent gem使用模块:

Webdriver

请注意小写字母的差异&#39; d&#39;。类和模块名称区分大小写,这就是找不到常量的原因。

该功能应该通过更正模块名称来实现:

class SomeModel < ActiveRecord::Base
  def some_function
    driver = Webdriver::UserAgent.driver(browser: :firefox, agent: :iphone, orientation: :portrait)
    # other functionality ...
  end
end