我正在尝试从rails执行phantom.js模块。到目前为止,我已经成功安装了二进制文件,phantomjs的路径似乎工作正常。
但是,当我尝试使用反引号从rails应用程序运行它时(例如:phantomjs rasterize.js http://google.com 1.jpg),它表示没有这样的文件或目录。
我认为原因是它无法找到rasterize.js的路径 我尝试将rasterize.js文件放在公共文件夹内的#{Rails.root}中,在控制器文件夹中,但没有任何作用。
我该如何解决这个问题?
====
更新:为了澄清,我发布了哪些代码在我的控制器内工作,哪些代码无效。
def create
'phantomjs'
end
< =上面的代码没有吐出路径错误,当我从浏览器发送请求时,phantomjs进程会被调用,导致在服务器端打开控制台。
def create
'phantomjs rasterize.js'
end
< =这不起作用,它吐出错误,说“没有这样的文件或目录”,这就是为什么我认为它与rails无法找到rasterize.js的路径有关。我尝试将rasterize.js放在公共文件夹,控制器文件夹内和主目录中:#{Rails.root},但它始终是相同的。
答案 0 :(得分:0)
有趣......我一直在尝试各种组合,最后遇到一个有效的案例,而且这不符合我的预期:
%x("/usr/local/bin/phantomjs /Users/e/Dropbox/Projects/rails/screenshots/rasterize.js http://google.com app/assets/images/2709.jpg")
< =这不起作用。
system("/usr/local/bin/phantomjs /Users/e/Dropbox/Projects/rails/screenshots/rasterize.js http://google.com app/assets/images/2709.jpg")
< =这有效。
我认为这些都在内部相同,除了返回值?也许我错了?
答案 1 :(得分:0)
让我们说你的命令是cmd
。很高兴知道%(cmd)
和exec(cmd)
,改变你所处的过程,所以如果你在轨道中并改变目录它将会出口。另一方面,“cmd
”和system(cmd)
将让您继续工作。
我从这个博客中了解到了这一点。 http://blog.jayfields.com/2006/06/ruby-kernel-system-exec-and-x.html