forked from mruby/mruby
-
Notifications
You must be signed in to change notification settings - Fork 4
How to write a new mrbgem
tsahara-iij edited this page Dec 25, 2012
·
11 revisions
新しい mrbgem の追加のしかた (mrbgems を別リポジトリに分けるべく一部書き直し中 by tsahara)
dir モジュールの例:
- リポジトリを作る。github のホームに行き、アカウントコンテキストを iij に変えてから "New Repository" ボタンを押す。 Repository Name は mruby-dir など。Public Repository に切り替え、"Initialize this repository with a README" に チェックを入れて "Create Repository" を押す。
- Description を書き替える。左上 "Code" のタブの直下の Edit を押して "Dir class for mruby" など適当な Description を書いて右側の "Save Changes" ボタンを押す。
- 作ったリポジトリに拡張の実装を入れる。
$ 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
(何も無いとエラーになるため空ファイルを作っておく)
- 古い拡張の削除:
$ vi include/mrbconf.h
(DISABLE_DIR の類を削除する)
$ vi src/init_ext.c
(mrb_init_dir の類を削除する)
$ rm -r src/ext/dir
$ rm mrblib/ext/dir.rb
- コンパイル & テスト
$ cd ~/mruby
$ echo /home/tsahara/mruby-dir >> mrbgems/GEMS.active
(実際にはちゃんと依存関係を考慮しつつソートして書く)
$ make clean
(GEMS.active を変更した後は clean が必要)
$ make
$ make test