2012-06-07 61 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

相關問題