2

我正在尝试从 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},但它总是一样的。

4

2 回答 2

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")

<= 这行得通。

我认为这些在内部都是一样的,除了返回值?也许我错了?

于 2012-06-07T15:22:45.677 回答
0

假设您的命令是cmd。很高兴知道%(cmd)并且exec(cmd),更改您正在使用的进程,因此如果您在 rails 中并更改了目录,它将退出。另一方面` cmd`又system(cmd)会让你继续工作。

我从这个博客中了解到这一点。http://blog.jayfields.com/2006/06/ruby-kernel-system-exec-and-x.html

于 2013-09-25T21:59:58.737 回答