У меня возникли проблемы с захватом экрана из моего приложения при использовании драгоценного камня 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
Это отлично работает! Поэтому я предполагаю, что что-то не так с моим контроллером, конфликтующим с сервером. Есть идеи?
Вы должны использовать многопоточный веб-сервер, такой как puma.
См. Здесь обзор различных вариантов.
Другая ошибка может быть вашей логикой контроллера. Если страница, получаемая фантомом, вызывает одно и то же действие контроллера, чем тот, который вызывает фантом, вы создаете бесконечный цикл.
Тогда даже многопоточный сервер застрял :)
args[0]