2016-04-04 14 views
1

私はLua 5.1を使用しています。いくつかのファイルをサンドボックスしたいです。 setfenvloadfileとしているようですが、requireで提供されているメカニズムを使用したいので、requireも使用したいと思います。私は、ディスクに置かれていないファイルをロードするカスタムローダーをいくつか持っています。出来ますか?または、代替ソリューションがありますか?setfenv with require function with Lua

+0

私は可能な限りすべてのモジュールを互いに分離する[Luaモジュール](https://github.com/siffiejoe/lua-modjail)を作成しました。私はもはや自分では使用しませんが、おそらくあなたはそれが面白いと思うでしょう... – siffiejoe

答えて

0

ここでの解決方法はかなりわかりやすいようです。requireファイルをモジュールを実装するファイルにしないでください。代わりに、ファイルloadfilerequireに、実際のモジュールをサンドボックスにします。その後、そのモジュールを返すことができます。

+0

申し訳ありませんが、私はそれを理解していない、どのようにこのソリューションは動作しますか?実際のモジュールをロードするためには、 'require'dファイルは' require'を再度呼び出さなければなりません。どんなところでも、私はモジュールがサンドボックス化されているのを意識しないようにしたいと思います。 – Noverull

+0

@ Noverull:それで、私はあなたが実際のモジュールを "ロード"すると言ったのです。あなたは 'require'を使用しません。その上で 'loadfile'を使います。モジュールは特別なものではありません。彼らはただのLuaスクリプトです。 –

+0

これは 'require'の使用を中断します。 'loadfile'で読み込めないファイルがあります。 – Noverull