Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 无头gem:webkit_服务器:无法连接到X服务器_Ruby On Rails_Ruby_Ruby On Rails 3_Webkit_Capybara Webkit - Fatal编程技术网

Ruby on rails 无头gem:webkit_服务器:无法连接到X服务器

Ruby on rails 无头gem:webkit_服务器:无法连接到X服务器,ruby-on-rails,ruby,ruby-on-rails-3,webkit,capybara-webkit,Ruby On Rails,Ruby,Ruby On Rails 3,Webkit,Capybara Webkit,我在使用Headless gem、Xvfb和我们的ci服务器运行capybara webkit时遇到了一些问题。我们使用此设置对RubyonRails3.2应用程序进行自动集成测试和javascript测试。在测试过程中,它抱怨说 webkit_server: cannot connect to X server 但是当我ps aux | grep Xvfb deploy 1602 0.0 0.1 61696 1912 pts/2 S+ Jul10 0:00 /us

我在使用Headless gem、Xvfb和我们的ci服务器运行capybara webkit时遇到了一些问题。我们使用此设置对RubyonRails3.2应用程序进行自动集成测试和javascript测试。在测试过程中,它抱怨说

webkit_server: cannot connect to X server
但是当我
ps aux | grep Xvfb

deploy    1602  0.0  0.1  61696  1912 pts/2    S+   Jul10   0:00 /usr/bin/Xvfb :99 -screen 0 1280x1024x24 -ac
我看到Xvfb正在运行。如果我用
--trace
运行测试,它也只显示上面的错误日志,我无法调试错误


我想知道如何获得更多信息,甚至解决方案吗?

我试图让capybara webkit gem与capybara一起工作,最后在CI作业中使用
xvfb run
进行测试

xvfb-run bundle exec cucumber ...

您的CI作业正在执行的命令是什么?

我们遇到了相同的问题。。。事实证明,在spec_helper.rb中,我们缺少headless start命令(如下所示)

以下是我们的rspec配置:

require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
require 'capybara/rspec'
require 'capybara/webkit'
require 'headless'

Capybara.register_driver :webkit do |app|
  Capybara::Driver::Webkit.new(app, :ignore_ssl_errors => true)
end

Capybara.javascript_driver = :webkit

# don't run on the local machine (since we don't have xvfb running locally)
if Rails.env.production?
    headless = Headless.new
    headless.start
end

如果您使用的是Travis CI,您可能会从以下配置设置中获得一些里程:

before_install:
- "echo 'gem: --no-document' > ~/.gemrc"
- "echo '--colour' > ~/.rspec"
- export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start
安装xvfb

sudo apt-get install xvfb 
然后使用xvfb执行命令

xvfb-run rspec

我的CI不为xvfb执行任何命令。这是在无头宝石()内处理的。现在我仔细观察了一下,我发现headless通过以下命令启动Xvfb服务器:{code>system“{CliUtil.path_to(“Xvfb”):{display}-screen 0{dimensions}-ac>/dev/null 2>&1&“,其中
CliUtil.path_to(“Xvfb”)
指的是``哪个{app app}
.strip
。在我的例子中,服务器返回
/usr/bin/Xvfb
。好的,我尝试暂时重写这个方法,让它返回
xvfbrun
。也许这对我有帮助。我已经做了四个多小时了。似乎地球上有两个人有这个问题。为什么要在规范配置文件中检查生产环境?在生产环境中不应该加载此文件吗?前两个
echo
语句不相关,可能会使其他语句混淆。