Skip to content

How to write a new mrbgem

tsahara-iij edited this page Dec 25, 2012 · 11 revisions

新しい mrbgem の追加のしかた (mrbgems を別リポジトリに分けるべく一部書き直し中 by tsahara)

dir モジュールの例:

  1. リポジトリを作る。github のホームに行き、アカウントコンテキストを iij に変えてから "New Repository" ボタンを押す。 Repository Name は mruby-dir など。Public Repository に切り替え、"Initialize this repository with a README" に チェックを入れて "Create Repository" を押す。
  2. Description を書き替える。左上 "Code" のタブの直下の Edit を押して "Dir class for mruby" など適当な Description を書いて右側の "Save Changes" ボタンを押す。
  3. 作ったリポジトリに拡張の実装を入れる。
$ cd
(簡単のため、ここではホーム直下にリポジトリを展開する)
$ git clone git@github.com:iij/mruby-dir.git
$ cd mruby-dir
$ cat >.gitignore
gem_*
gem-*
mrb-*.a
src/*.o
(2012/12/25時点ではこれで充分のようだ)
$ cp -i ../../../doc/mrbgems/c_and_ruby_extension_example/Makefile .
(拡張の実装が .c だけなら c_extension_example から、.rb だけなら ruby_extension_example からコピる)
(両方あるなら↑の通り)
$ vi Makefile
(先頭行を書き換える)
GEM := mruby-dir
$ mkdir src
$ vi src/dir.c
(.c の実装を書く。エントリポイントとして mrb_XXX_gem_init を置くのを忘れない。)
$ mkdir mrblib
$ vi mrblib/dir.rb
(.rb の実装を書く)
$ mkdir test
$ touch test/dir.rb 
(何も無いとエラーになるため空ファイルを作っておく)
  1. 古い拡張の削除:
$ vi include/mrbconf.h
(DISABLE_DIR の類を削除する)
$ vi src/init_ext.c
(mrb_init_dir の類を削除する)
$ rm -r src/ext/dir
$ rm mrblib/ext/dir.rb
  1. コンパイル & テスト
$ cd ~/mruby
$ echo /home/tsahara/mruby-dir >> mrbgems/GEMS.active
(実際にはちゃんと依存関係を考慮しつつソートして書く)
$ make clean
(GEMS.active を変更した後は clean が必要)
$ make
$ make test

Clone this wiki locally