2012-06-07 30 views
2

我想从rails执行phantom.js模块。到目前为止,我已经成功安装了二进制文件,phantomjs的路径似乎工作正常。如何从Rails应用程序中设置系统调用的路径?

但是,当我尝试从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 

< =这是不行的,它吐出错误说“没有这样的文件或目录”,这就是为什么我认为这与没有能够找到rasterize.js的路径轨道做。我尝试将rasterize.js放入公用文件夹,内部控制器文件夹和主目录内:#{Rails.root},但它总是相同的。

+0

你能显示一些代码吗? –

+0

没有太多的代码。这似乎是明显的路径问题,我没有更新这个问题有点... – Vlad

+0

尝试明确设置路径像“”phantomjs#{Rails.root} /rasterize.js“' – Stefan

回答

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

< = This works。

我认为这些都在内部工作相同,除了返回值?也许我错了?

+0

不要在'%x(...)'中使用引号。另外,我注意到在你的问题的更新中,你把单引号放在命令的周围,而不是反引号。这是一个错字吗? – echristopherson

相关问题