昨日はmrubyでMySQLのUDFを作ってみたんだけど、関数毎にCのプログラムを書くのがめんどくさいので、簡単なツールを作ってみた。
詳しくは README 参照。
fib.rb と fib.spec をこんな感じで作っておいて、
fib.rb
LONG_LONG_MAX = 9223372036854775807 def fib(n) b = 1 c = 0 n.times do a, b = b, c c = a + b raise 'Overflow' if c > LONG_LONG_MAX end c end
fib.spec
MrubyUdf.function do |f| f.name = 'fib' # 関数名は fib f.return_type = Integer # 戻り値は Integer f.arguments = [ # 引数は一つで型は Integer Integer ] end
% mrubyudf fib.spec
とやれば fib.so が出来上がるはず。 …
[さらに読む]