从PHP运行Ruby脚本

时间:2014-06-13 09:19:41

标签: php ruby-on-rails ruby

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

不幸的是,似乎唯一的方法是使用Ruby,因为我找不到任何PHP解析器。

然而,我对红宝石完全不熟悉,以前从未使用它。无论如何,我将不得不从PHP执行.rb文件来进行转换。

但是,我无法设置ruby以便正常运行(我相信)。

我设置了一个文件夹(苗条),内容如下:

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有关,但就像我说的那样,我对它完全不熟悉,也不知道如何让它运行起来。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

首先,您已在服务器中安装slim gem。

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