PhantomJS.rb зависает при попытке сделать скриншот страницы в моем приложении rails

1

У меня возникли проблемы с захватом экрана из моего приложения при использовании драгоценного камня phantomjs.rb. В настоящее время я просто пытаюсь использовать локальный url. Если я заработаю, я буду использовать url_for позже.

В моем контроллере:

Phantomjs.run('./public/javascripts/testScreenCapture.js', 'http://localhost:3000')

И мой testScreenCapture.js:

var page = require('webpage').create();

var args = require('system').args;
var url = args[1];

page.open(url, function () {
    window.setTimeout(function () {
      page.render('./public/appPage.png');
      phantom.exit();
    }, 3000);
});

Передача " http://www.google.com ", поскольку аргумент url работает отлично, он просто, когда я пропускаю что-либо с моего локального сервера, когда сервер rails зависает, и я тоже принимаю сценарий phantomjs, так как я не получить скриншот в моей общей папке.

Что еще более странно работает из командной строки:

phantomjs public/javascripts/testScreenCapture.js http://localhost:3000

Это отлично работает! Поэтому я предполагаю, что что-то не так с моим контроллером, конфликтующим с сервером. Есть идеи?

  • 0
    Я думаю, что javascript имеет индекс 0 - вы должны вытягивать аргументы, начиная с args[0]
  • 0
    @bdares Поскольку местоположение файла скрипта является первым аргументом, нет причин вызывать [0]. Мне нужны следующие три аргумента для моего скрипта, а именно: электронная почта, пароль и URL.
Показать ещё 3 комментария
Теги:
phantomjs

1 ответ

2

Вы должны использовать многопоточный веб-сервер, такой как puma.

См. Здесь обзор различных вариантов.

Другая ошибка может быть вашей логикой контроллера. Если страница, получаемая фантомом, вызывает одно и то же действие контроллера, чем тот, который вызывает фантом, вы создаете бесконечный цикл.

Тогда даже многопоточный сервер застрял :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню