void ex_ruby(exarg_T *eap)
{
    int state;
    char *script = NULL;

    if (ensure_ruby_initialized())
    {
        script = script_get(eap, eap->arg);
        if (script == NULL)
            rb_eval_string_protect((char *)eap->arg, &state);
        else
        {
            rb_eval_string_protect(script, &state);
            vim_free(script);
        }
        if (state)
            error_print(state);
    }
}

static int ensure_ruby_initialized(void)
{
    if (!ruby_initialized)
    {
        ruby_init();
        ruby_init_loadpath();
        ruby_io_init();
        ruby_vim_init();
        ruby_initialized = 1;
    }
    return ruby_initialized;
}

