Capybara / Poltergeist“web_socket_server error”on“initialize”:权限被拒绝

时间:2015-12-22 16:06:22

标签: ruby phantomjs capybara openshift poltergeist

我正在尝试使用Ruby 1.9.3应用程序(不是rails或web)在Openshift中运行Capybara / PhantomJS测试。它在本地运行良好,但当我尝试bundle exec ruby test.rb时,它输出:

/var/lib/openshift/asdf/app-root/runtime/repo/vendor/bundle/ruby/1.9.1/gems/poltergeist-1.8.1/lib/capybara/poltergeist/web_socket_server.rb:34:in `initialize': Permission denied - bind(2) (Errno::EACCES)
        from /var/lib/openshift/asdf/app-root/runtime/repo/vendor/bundle/ruby/1.9.1/gems/poltergeist-1.8.1/lib/capybara/poltergeist/web_socket_server.rb:34:in `open'
        from /var/lib/openshift/asdf/app-root/runtime/repo/vendor/bundle/ruby/1.9.1/gems/poltergeist-1.8.1/lib/capybara/poltergeist/web_socket_server.rb:34:in `start_server'
        from /var/lib/openshift/asdf/app-root/runtime/repo/vendor/bundle/ruby/1.9.1/gems/poltergeist-1.8.1/lib/capybara/poltergeist/web_socket_server.rb:26:in `initialize'
        from /var/lib/openshift/asdf/app-root/runtime/repo/vendor/bundle/ruby/1.9.1/gems/poltergeist-1.8.1/lib/capybara/poltergeist/server.rb:20:in `new'
        from /var/lib/openshift/asdf/app-root/runtime/repo/vendor/bundle/ruby/1.9.1/gems/poltergeist-1.8.1/lib/capybara/poltergeist/server.rb:20:in `start'
        from /var/lib/openshift/asdf/app-root/runtime/repo/vendor/bundle/ruby/1.9.1/gems/poltergeist-1.8.1/lib/capybara/poltergeist/server.rb:8:in `initialize'
        from /var/lib/openshift/asdf/app-root/runtime/repo/vendor/bundle/ruby/1.9.1/gems/poltergeist-1.8.1/lib/capybara/poltergeist/driver.rb:38:in `new'
        from /var/lib/openshift/asdf/app-root/runtime/repo/vendor/bundle/ruby/1.9.1/gems/poltergeist-1.8.1/lib/capybara/poltergeist/driver.rb:38:in `server'
    from /var/lib/openshift/asdf/app-root/runtime/repo/vendor/bundle/ruby/1.9.1/gems/poltergeist-1.8.1/lib/capybara/poltergeist/driver.rb:25:in `browser'
    from /var/lib/openshift/asdf/app-root/runtime/repo/vendor/bundle/ruby/1.9.1/gems/poltergeist-1.8.1/lib/capybara/poltergeist/driver.rb:95:in `visit'
    from /var/lib/openshift/asdf/app-root/runtime/repo/vendor/bundle/ruby/1.9.1/gems/capybara-2.5.0/lib/capybara/session.rb:232:in `visit'
    from /var/lib/openshift/asdf/app-root/runtime/repo/vendor/bundle/ruby/1.9.1/gems/capybara-2.5.0/lib/capybara/dsl.rb:51:in `block (2 levels) in <module:DSL>'
    from test.rb:43:in `test'
    from test.rb:58:in `<main>'

我正在使用Poltergeist并手动将其指向phantomjs可执行文件,如Poltergeit's github(从该页面获得的exec,v1.98)中所见,这似乎可以自行运行并具有适当的可执行权限。它与ruby项目位于同一个目录中,因此poltergeis的:phantomjs选项为./phantomjs

我从输出中看到,vendor / bundle中的Ruby版本是1.9.1,根据Capybara的github不支持,但我不确定这是否相关。

任何想法在这里可能有什么问题,或者如何更好地调试此错误?

1 个答案:

答案 0 :(得分:1)

看起来您的应用程序(或其中某些部分)正在尝试绑定到不允许的IP地址或端口。您只能绑定到您的openshift IP地址(不是0.0.0.0或127.0.0.1),您的应用程序应该绑定到端口8080,以便它可以公开访问。您可以参考Developer Portal的这一部分(https://developers.openshift.com/en/managing-port-binding-routing.html),以获取有关如何将请求路由到您的应用程序的更多信息。