2014-06-13 247 views
0

我正在开发一个PHP项目,我需要将.slim(http://slim-lang.com/)文件转换为常规HTML。从PHP运行Ruby脚本

不幸的是,似乎这样做的唯一方法是通过使用Ruby,因为我无法找到任何纤巧的PHP解析器。

但是,我对ruby完全陌生,以前从未使用过它。无论如何,我将不得不从PHP执行一个.rb文件来完成转换。

但是,我无法设置红宝石运行正常(我相信)。

我建立一个文件夹(苗条)与下列:

的Gemfile

source 'https://rubygems.org' 
gem "listen" 
gem "slim" 
gem "sass" 

Gemfile.lock的

GEM 
    remote: https://rubygems.org/ 
    specs: 
    ffi (1.9.0) 
    listen (1.3.0) 
     rb-fsevent (>= 0.9.3) 
     rb-inotify (>= 0.9) 
     rb-kqueue (>= 0.2) 
    rb-fsevent (0.9.3) 
    rb-inotify (0.9.1) 
     ffi (>= 0.5.0) 
    rb-kqueue (0.2.0) 
     ffi (>= 0.5.0) 
    sass (3.2.10) 
    slim (2.0.1) 
     temple (~> 0.6.6) 
     tilt (>= 1.3.3, < 2.1) 
    temple (0.6.6) 
    tilt (1.4.1) 

PLATFORMS 
    ruby 

DEPENDENCIES 
    listen 
    sass 
    slim 

main.rb的

require 'listen' 
require 'slim' 


# if source folder specified 
if ARGV[0] 
    Listen.to!(ARGV[0], :filter => /\.slim$/) do |modified, added| 
    modified.each do |modified_file| 
     system("slimrb --pretty #{modified_file} > #{modified_file.gsub('.slim','')}.html --trace") 
    end 
    end 
end 

所以从我个人理解,这应该得到任何文件与.slim扩展,并将其转换为.html

然后在我的PHP我有:

<?php 

$pathToRB = "http://example.com/path/to/ruby/file/main.rb"; 

exec($pathToRB); 

?> 

不幸的是,虽然没有做任何事情。我非常肯定这与在服务器上运行ruby或某事有关,但正如我所说,我完全不熟悉它,不确定如何启动它并运行。

任何帮助,非常感谢。

+0

您如何期望web服务器运行Ruby脚本本身?为什么不使用'系统'功能或类似的功能? –

+0

我试过系统,仍然不起作用。就像我说的,很确定这是与红宝石有关 – user3143218

+0

你尝试了什么?你明白你在做什么? –

回答

2

首先你已经在你的服务器上安装了slim宝石。

gem install slim 

接下来,在php中运行slimrb命令。

<?php 

$input = "/path/to/foo.slim"; 
$output = "/path/to/foo.html"; 

// if this doesn't work, try use the full path of slimrb 
exec("slimrb --pretty $input > $output"); 
+0

我不认为我有权访问服务器上的控制台?我可以直接从github上下载repo并将其放入slim文件夹中吗? – user3143218

+0

@ user3143218如果你的服务器没有ruby环境,那就没办法。就像你不要在你的服务器上安装PHP一样,但是想运行PHP代码。 – xdazz

+0

好的谢谢你的帮助 – user3143218