« [Ruby] rc-rest | トップページ | [本] 密室に拘った短編集 »

2009年7月12日 (日)

[Ruby] Rubyの組み込み(Ruby 1.9.2devとともに)


Vimにうまく組み込めないので、超簡易Ruby組み込みプログラムを作って試してみた。



$ cat myrubyapp.c
#include <stdio.h>
#include <ruby.h>
int main(int argc, char ** argv) {
int state = 0;
VALUE err;
VALUE msg;
RUBY_INIT_STACK;
ruby_init();
ruby_init_loadpath();
if (argc > 1) {
rb_eval_string_protect(argv[1], &state);
if (state) {
err = rb_errinfo();
msg = rb_obj_as_string(err);
fprintf(stderr, "%s\n", StringValuePtr(msg));
}
}
fprintf(stderr, "%s finished.\n", argv[0]);
return 0;
}


コンパイルした後実行してみる。



$ ./myrubyapp 'puts RUBY_DESCRIPTION'
ruby 1.9.2dev (2009-07-11 trunk 24029) [i686-linux]
./myrubyapp finished.


では、例外を発生させてみる。



$ ./myrubyapp 'a = a + 1'
undefined method `+' for nil:NilClass
./myrubyapp finished.


うーん。ちゃんと動いてしまうではないか。SEGVしてくれることを期待していたのに。
Vim の Ruby の組み込みってもしかして、メインスレッドじゃないところで動いているのかな。


|

« [Ruby] rc-rest | トップページ | [本] 密室に拘った短編集 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [Ruby] Rubyの組み込み(Ruby 1.9.2devとともに):

« [Ruby] rc-rest | トップページ | [本] 密室に拘った短編集 »