当我尝试使用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,但我确定我在这里做了一些蠢事......
其他信息:
答案 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