RubyでPukiWikiプラグインを書くごく簡単な方法

ずいぶん前からイントラネットでのWikiにはPukiWikiを導入してる。
最近、プロジェクトダッシュボード的にWikiを使い始めていて、ちょっとしたプラグインが書きたくなったけどPHPだと辛いなー、ということでどうにかRubyで書く方法を模索。

簡単な方法を見つけた。

それはshell_exec()関数を使う方法

たとえば、以下のような内容のファイルを PukiWikiのpluginフォルダにプラグインを配置する。(以下のファイルの例だとファイル名を "hello_ruby.inc.php"とする)

<?php

function plugin_hello_ruby_convert()
{ 
  return shell_exec("/usr/bin/ruby /path/to/plugin/hello.rb");
}

?>

で、/path/to/plugin/hello.rb というファイルに以下のようなRubyスクリプトを書いておく。

puts "Hello PukiWiki."

そうして、PukiWikiのページ内にプラグインの呼び出し

#hello_ruby

PukiWikiプラグインを通してRubyスクリプトが実行され、その結果"Hello, PukiWiki"がPukiWikiのページに表示されたことがわかる。


ちょっと応用してErbをつかってみる。

以下のようにPukiWikiプラグイン側を変更して

<?php

function plugin_hello_ruby_convert()
{ 
  return shell_exec("/usr/bin/erb /path/to/plugin/hello.erb");
}

?>

/path/to/plugin/hello.erb に以下のようなスクリプトを記述

<h2>Hello, Erb world.</h2>
<ul>
  <% ["ほげ", "ふが", "もげ"].each do |i| %>
  <li><%= i %>
<% end %>
</ul>

実行してみる

レンタルサーバとかだとshell_exec()使えなかったりするかもしれないけど、イントラネットの自前のサーバで使う分にはけっこう便利だったりする。