2014-06-13 284 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