@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

https://cdn.jsdelivr.net/npm/ruby-head-wasm-wasi@0.3.0-2022-09-06-f/dist/browser.script.iife.js のsrc属性対応

ruby.wasm/browser.script.ts at d92d1a82256c12604a1e6e15e1269f6d11a81af3 · ruby/ruby.wasm · GitHub を次のようにすれば良いじゃん簡単じゃん?と思っていました。

        if (tag.type === "text/ruby") {
            if (tag.hasAttribute('src')){
                const response = await fetch(
                    tag.getAttribute('src')
                );
                const rubyScript = await response.text();
                vm.eval(rubyScript);            
            } else if (tag.innerHTML) {
                vm.eval(tag.innerHTML);
            }
        }

ビルドが思っていたより難しいです。

最初 https://github.com/ruby/ruby.wasm/blob/d92d1a82256c12604a1e6e15e1269f6d11a81af3/packages/npm-packages/ruby-wasm-wasi/build-package.sh を使ってビルドすれば良いと思いました。 これでビルドできるのはiife.jsではありませんでした。

iife.jsをビルドしてるのは https://github.com/ruby/ruby.wasm/blob/d92d1a82256c12604a1e6e15e1269f6d11a81af3/packages/npm-packages/ruby-head-wasm-wasi/rollup.config.js#L9-L10 なことに気がつきました。

で、ビルドしてみると ruby.wasm/browser.script.ts at d92d1a82256c12604a1e6e15e1269f6d11a81af3 · ruby/ruby.wasm · GitHubruby.wasmの読込が上手くいかなくなりました。

さて、どうやって動かしたものでしょうか・・・。