Можно ли запустить capybara-webkit (т.е. разветвленный webkit_server) на Heroku Cedar? - PullRequest
11 голосов
/ 24 января 2012

Мне нужно запустить capybara-webkit внутри приложения Rails, чтобы включить автономный просмотр веб-страниц с поддержкой JavaScript (т. Е. Не для целей тестирования / CI, и веб-браузер или другие приемочные тестовые драйверы / инфраструктуры не будут работать).Мне интересно, возможно ли это при развертывании Heroku, особенно потому, что для этого требуется QtWebKit и возможность ветвить процесс webkit_server с помощью сокетов.Я открыт для творческих идей о том, как сделать эту работу на Heroku (например, пул рабочих динамов).Я надеюсь, что кто-то лучше разбирается в том, какие ограничения существуют в среде Heroku, или может категорически исключить такую ​​возможность, чтобы я мог перейти к AWS EC2, если это необходимо.

Поиск этого, как правило, приводит кмного о тестировании капибары и надстройках для серверов CI, ни один из которых не подходит для моего случая использования.Я ничего не тестирую (по крайней мере, не в традиционном смысле cucumber / rspec / etc) - я использую интеграцию Capybara с драйвером webkit, средствами поиска и моделью узлов / элементов для навигации по сайту, который требует значительного количества клиентов.Side JS для работы.

Я также открыт для других (нативных Ruby) решений для программного взаимодействия с веб-сайтами с использованием DOM с поддержкой JavaScript.

Ответы [ 3 ]

7 голосов
/ 31 января 2012

Я говорил об этом со службой поддержки Heroku, и они ответили, что это в основном: а) без поддержки; б) очень сложная, включая (помимо прочего) статически построенную версию QtWebKit.

Мое собственное расследование этого на Amazon EC2 также дало мне понять, что QtWebKit требует работающий экземпляр Xvfb. Я очень сомневаюсь, что это будет доступно на Heroku, и я подозреваю, что было бы чрезвычайно трудно заставить это работать.

Мой собственный подход состоял в том, чтобы поместить эту функциональность в экземпляр EC2. Сделав несколько попыток со стандартными AMI Amazon (их сборкой и RHEL), я обнаружил, что пакеты, доступные через системы управления пакетами Ubuntu, намного облегчают запуск.

Короче говоря: Heroku - это не стартер, Amazon EC2 с Ubuntu - лучший путь.

5 голосов
/ 23 марта 2015

Мне удалось успешно запустить Capybara + Poltergeist + PhantomJS на Heroku

Я поместил скомпилированные файлы phantomjs для OSX (для моей машины для разработки) и linux-64 (для Heroku) в папку bin /приложение my Rails.

инициализаторы / capybara.rb

require 'capybara/poltergeist'

Capybara.register_driver :poltergeist do |app|
  phantomjs_path = if RUBY_PLATFORM['x86_64-darwin']
                     Rails.root.join('bin', 'phantomjs-osx').to_s
                   elsif RUBY_PLATFORM['x86_64-linux']
                     Rails.root.join('bin', 'phantomjs-linux-64').to_s
                   else
                     raise "Can't load PhantomJS for OS: #{RUBY_PLATFORM}"
                   end

  options = {
      phantomjs: phantomjs_path,
      phantomjs_logger: Logger.new('/dev/null'),
      phantomjs_options: %w[--load-images=no --ignore-ssl-errors=yes],
      js_errors: false,
      timeout: 90
  }
  Capybara::Poltergeist::Driver.new(app, options)
end

Capybara.default_driver = :poltergeist
Capybara.javascript_driver = :poltergeist
Capybara.default_wait_time = 1

Пример кода:

session ||= Capybara::Session.new(:poltergeist)
session.visit('http://google.com')

Удачи!

2 голосов
/ 26 января 2012

Вы можете выполнить то, что хотите, используя PhantomJS.

Этот проект имеет JavaScript, а не Ruby API, хотя экземпляр браузера может предоставлять веб-сервер, что позволяет вам общаться с ним изRuby over HTTP.

http://code.google.com/p/phantomjs/wiki/Interface

...