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服务器也会卡住:)