Ruby は、プラットフォームに応じてまたはという名前のファイルをrequire 'something'
検索します。something.rb
something.dll/so/bundle
ライブラリが見つかった場合、dll/so/bundle
それを動的にロードし、 というシンボルを検索しますInit_something
。ネイティブ エクステンションを作成するときの慣例は、Ruby インタープリターが接続するために使用する関数を含めることです。
インタープリターが rb ファイルを検索する場所 (どのディレクトリ) とライブラリは、インタープリターの -I オプションを使用して追加できるロード パスによって決定されます。実行時に、現在のロード パスは次のように$:
なります (実行時にこれにさらにディレクトリを追加することもできます)。次に例を示します。
$ irb
irb(main):001:0> puts $:
/opt/local/lib/ruby/site_ruby/1.8
/opt/local/lib/ruby/site_ruby/1.8/i686-darwin9
/opt/local/lib/ruby/site_ruby
/opt/local/lib/ruby/vendor_ruby/1.8
/opt/local/lib/ruby/vendor_ruby/1.8/i686-darwin9
/opt/local/lib/ruby/vendor_ruby
/opt/local/lib/ruby/1.8
/opt/local/lib/ruby/1.8/i686-darwin9
.
require のドキュメントを見てください ( http://ruby-doc.org/core-1.8.7/classes/Kernel.html#M001077 )
私はあなたが何を意味するのか分かりません:
PS私が今作業しなければならないRubyの唯一の公開部分は「msvcrt-ruby18.dll」です
また、サンドボックスについて何か言及しました。これにより、モジュールを要求する機能が妨げられる可能性があります。$SAFE を検索します。$SAFE が >2 に設定されている場合は、まったく使用できませんrequire
。