Вы должны использовать функцию rb_define_readonly_variable
из расширения C, например:
VALUE var;
void Init_my_extension(void) {
var = Qnil; // set this to the initial value.
rb_define_readonly_variable("$var", &var);
}
Затем, когда вы пытаетесь сделать это из ruby:
$var = 123
вы получите ошибку.
NameError: $var is a read-only variable