Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

require

akiray03 edited this page · 3 revisions

Kernel#require 仕様

  • 特徴

    • ロードパスからファイルを探す
    • 拡張子 .rb / .mrb を省略できる (.rb が優先)
    • 同じファイルは二度以上ロードしない
  • CRubyと異なる点

    • 拡張ライブラリ (.so) はロードできない
  • 注意点

    • 拡張子 .rb のロードには、 mrbc が必要
    • tools/mruby, tools/mirb の実行環境・実行方法によっては、ロードパスが設定されない
      • mruby の -I オプション、または MRBLIB環境変数で指定してください

Kernel#load 仕様

  • 特徴

    • 同じファイルを複数回ロードできる
    • 他は require と同様
  • CRubyと異なる点

    • 拡張ライブラリ (.so) はロードできない
    • 拡張子 .rb / .mrb が補われる
  • 注意点

    • require と同様

実装メモ

  • mrbcのパス
    • tools/mruby, tools/mirb を相対パスで起動した場合には、各バイナリと同じディレクトリに mrbc が存在することを仮定します
    • その他の場合は、環境変数 PATH を順に探索します
  • .rbファイルのコンパイル
    • .rb ファイルを読み込む場合には、 mrbc を使って mrb 形式にコンパイルを行います
    • コンパイル結果(.mrbファイル)は /tmp 配下に出力され、 require / load が成功すると削除されます
  • ロードパス
    • tools/mruby は、 -I オプションで指定できます (ロードパスの先頭に追加されます)
    • 環境変数 MRBLIB で指定できます
    • tools/mruby, tools/mirb を相対パスで起動した場合には、ひとつ上位階層のディレクトリの ext に対するロードパスが追加されます
mruby_repo/bin/mruby
          /ext  <---
  • requireで読み込んだファイル一覧
    • require で読み込みに成功したファイルは $" に配列で格納されます
    • require で読み込もうとしたファイルは $"_ に配列で格納されます (mruby独自)
Something went wrong with that request. Please try again.