2012-10-31 49 views
0

我有一个应用程序,我想使用libreoffice批量转换文件为html。我有以下方法:在rails上运行soffice(libreoffice或openoffice)从ruby中的命令行运行

def set_versioned_odt 
    condition = %x(soffice --invisible --convert-to html /path/to/file.odt --outdir /path/to/dir/) 

    if condition 
    Rails.logger.info "This has been finished" 
    else 
    Rails.logger.info "This failed..." 
    end 

当我运行在应用此方法。它将返回一条失败的声明;然而,如果我在rails控制台中运行这个命令,soffice会正确处理。有谁知道我在轨道应用程序中做错了什么?

谢谢。

+0

你可以尝试convert_office gem,https://github.com/amardaxini/convert_office – Amar

回答

0

最好的猜测是soffice不在路径中。尝试指定soffice的完整路径。

+0

我试过了,然后使用系统方法时它返回false。这很奇怪,因为它在rails控制台中工作而不是在应用程序中。 – Kyle

+0

什么操作系统?是作为不同用户运行的应用程序。如果linux是像SELinux那样阻碍的话? – Doon

+0

目前我在Mac OSX 10.8上。 我检查了应用程序的Path变量,它似乎并不存在 - > ENV [“PATH”]。我将它添加到enviroment.rb文件中,并得到一个错误信号6 - > SIGIOT 6. – Kyle