我的Rails应用程序中有一种方法(旨在通过Rake任务触发),该方法会弹出并运行PhantomJS进程:
bin/proximo bin/phantomjs vendor/assets/javascripts/yslow.js http://www.example.com
phantomjs
可执行文件是1.8.1或Linux(x86-64)。 yslow.js
是PhantomJS 3.1.1的YSlow。
这个过程是通过Heroku的Proximo插件运行的,因为我运行此网站(上面的example.com)的网站将向任何IP显示反DOS保护页面没有列入白名单。
我遇到的问题是这个命令只是挂起,没有输出。如果我在不执行bin/proximo
包装器脚本的情况下运行相同的命令,它可以工作,但由于上面提到的IP限制,我当然会得到错误页面的输出。
这是直接在Heroku的Rails控制台中运行它的堆栈跟踪:
irb(main):023:0> `bin/proximo bin/phantomjs vendor/assets/javascripts/yslow.js http://www.example.com`
^CIRB::Abort: abort then interrupt!
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.11/lib/active_support/core_ext/kernel/agnostics.rb:7:in `call'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.11/lib/active_support/core_ext/kernel/agnostics.rb:7:in ``'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.11/lib/active_support/core_ext/kernel/agnostics.rb:7:in ``'
from (irb):23
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
有什么想法导致挂起?
编辑:我的同事帮助我发现它实际上是PhantomJS,而不是代理。除非其他人有其他建议,否则我会寻找另一种销售PhantomJS的方式。
编辑2 :我使用Heroku buildpack安装了PhantomJS,同样的事情发生了。我还注意到,如果我连接到Heroku上的Bash shell并运行phantomjs
控制台,我就无法在其中输入命令,因为回车键不执行任何操作。不确定这是否相关......