Я пытаюсь запустить тест 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, но я не уверен, что это связано.
Любые идеи, что может быть неправильно здесь, или как лучше отладить эту ошибку?
Итак, я не могу использовать Poltergeist, потому что он пытается связать что-то, даже не запуская phantomjs. Я просмотрел SO для альтернатив и нашел исправленные phantomjs, который позволяет связать IP-адрес Openshift с опцией webdriver. Я запускаю phantomjs, поэтому я предполагаю, что он связал порт. Но теперь я не знаю, как использовать его у Capybara, так как я мог использовать только Poltergeist с Capybara/phantomjs. – ArthurChamz
ОК. Наконец-то я получил Poltergeist для работы над Openshift, но мне пришлось изменить его источник. Большое спасибо за ваш ответ, он указал мне в правильном направлении. – ArthurChamz