2015-12-22 2 views
1

Я пытаюсь запустить тест Capybara/PhantomJS в Openshift, используя приложение Ruby 1.9.3 (не рельсы или сеть). Он хорошо работает на местном уровне, но когда я пытаюсь bundle exec ruby test.rb выводит:Capybara/Poltergeist «ошибка web_socket_server» на «initialize»: разрешено разрешение

/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>' 

Я использую Полтергейст и вручную указав его в phantomjs исполняемым, как показано в Poltergeit's github (EXEC, полученные с этой страницы, v1.98), который кажется, работает отлично самостоятельно и имеет надлежащие исполняемые привилегии. Он расположен в том же каталоге, что и рубиновый проект, поэтому опция :phantomjs для poltergeis - ./phantomjs.

Я вижу на выходе, что версия Ruby в вендоре/комплекте равна 1.9.1, которая не поддерживается в соответствии с github Capybara, но я не уверен, что это связано.

Любые идеи, что может быть неправильно здесь, или как лучше отладить эту ошибку?

ответ

1

Похоже, что ваше приложение (или его часть) пытается привязать к ip-адресу или порту, к которому это запрещено. Вам разрешено связываться с вашим ip-адресом openshift (не 0.0.0.0 или 127.0.0.1), и ваше приложение должно привязываться к порту 8080, чтобы оно было общедоступным. Вы можете обратиться к этому разделу (https://developers.openshift.com/en/managing-port-binding-routing.html) портала разработчиков за дополнительной информацией о том, как запросы направляются в ваше приложение.

+0

Итак, я не могу использовать Poltergeist, потому что он пытается связать что-то, даже не запуская phantomjs. Я просмотрел SO для альтернатив и нашел исправленные phantomjs, который позволяет связать IP-адрес Openshift с опцией webdriver. Я запускаю phantomjs, поэтому я предполагаю, что он связал порт. Но теперь я не знаю, как использовать его у Capybara, так как я мог использовать только Poltergeist с Capybara/phantomjs. – ArthurChamz

+0

ОК. Наконец-то я получил Poltergeist для работы над Openshift, но мне пришлось изменить его источник. Большое спасибо за ваш ответ, он указал мне в правильном направлении. – ArthurChamz

Смежные вопросы