mruby未体験...
mrubyがリリースされた!というニュースが流れて
長い月日が流れて、一度もmruby処理系に関して触れたことがない自分。
mrubyについてどうすれば良いのか、とか其のところすらわかっていないので、
mruby Advent Calendarができたということで学びつつやってみたいなと思い、
書いてみます。
自分の開発環境はMac OS Xで、
他OS上ではまだ一度もいじったことがない状態です。
ご容赦くださいm(_ _)m
開発環境を整えたい
mrubyの環境を整えるにはどうすればいいのか?ということで
homebrewにFormulaあるかな?と思ってbrew search
してみました
> brew serach mruby
mruby
あった。ということでインストール。
> brew install mruby
対話環境を触る
Executing Ruby code with mruby を見てみると
mirbが対話環境らしい。ので起動してみる。
> mirb
mirb - Embeddable Interactive Ruby Shell
>
何ができて何ができないのだろう?
2015年も終わる状態でこんなこと書いてますが、わからなかったりします。
Rubyフルセット環境からミニマムにするために切り落としている機能はなんだっけ?って探してみました。
軽く触れてみる
> class Hoge
* def name
* puts 'hoge'
* end
* end
=> :name
> Hoge.new.name
hoge
=> nil
classはある。
(1..100).to_a.delete_if { |x| x % 2 == 0 }
=> [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]
問題なさそう?
> require 'test.rb'
(mirb):13: undefined method 'require' for main (NoMethodError)
おっと、requireないのね...
mrbgemのインストール
とある文字列を一方向ハッシュ化したい場合どうすればよいか
mruby.orb/libraliesで、使いたいライブラリを探して入れる感じになるらしい。
mruby-digestを使ってみる。
mruby-digestのインストール
mrubyでのgem(mrbgem)インストールはどうすればいいのかな?と思ってググってみた。
build_config.rbでビルドの設定をするようだ...(知らなかった)
テスト用のディレクトリにbuild_config.rbファイルを作り、mruby-digestを使えるようにしてみる
ビルドをして自分のmubyを作らないといけない
ミニマムなセットのmrubyにあれこれ追加したい場合、
先ほどあげたbuild_config.rbに入れておきたいmrbgemパッケージを
同梱させる形でビルドしないといけないようだ。
mrubyのソースコードをgithubの公式リポジトリから取ってきてビルドしよう。
> git clone https://github.com/mruby/mruby.git
> cd mruby
> vi build_config.rb
build_config.rbについてmruby-digestを加える。
MRuby::Build.new do |conf|
conf.gem :git => 'https://github.com/iij/mruby-digest.git' # 今回追加
end
最初間違えてMRuby::Build.new('host-debug')に追加してDigest
使えなくてびっくりした。
そしてビルド。
> make
...
しばらく待つ。
ビルドが終わったら、mruby-digestが利用できるか確認してみる。
> cd bin
> ./mirb
> Digest
=> Digest
> Digest::SHA256.digest('hogehoge')
=> "LqmL\362\021\307\267\322\363#<\224\027q\255\005\a\352[\254\371;I'f\252A\256\237r\r"
> Digest::SHA256.hexdigest('hogehoge')
=> "4c716d4cf211c7b7d2f3233c941771ad0507ea5bacf93b492766aa41ae9f720d"
おお、使えてる。
ちょっと触っただけの記事だけど
mrubyについてどうすればよいのかさっぱりわからかったので、
ひとまず一歩、という感じがする。
欲しいライブラリについては自作するか、
Related Projects一覧にあるものを
持ってきてビルドして配布して利用する形になるんだなという感じ。
コアセット以外の機能について欲しいものだけbuild_configに書き込んで利用する、という
わかりやすさがよかった。
小さいセットだから使おう、というのもありそうだけど
用途によっては(ngx_mruby)
通常業務で利用できそう。
薄い内容だけど、そんな感想を持った。
正式公開されて2年以上経つけど、今更mrubyを触ってみた、という記事でした。