PhantomJS.rb在我的rails应用程序中尝试屏幕捕获页面时冻结
使用phantomjs.rb gem时,我无法从我的应用程序中获取屏幕截图。 我目前正在尝试本地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这样的multithreadingWeb服务器。
有关不同选项的概述,请参见此处 。
另一个陷阱可能是你的控制器逻辑。 如果由幻像呈现的页面触发与调用幻像的页面相同的控制器操作,则会创建无限循环。
然后,即使是multithreading服务器也会卡住:)