С ruby 2.3.0
настолько легко скомпилировать ваш исходный код в байт-коды, что Ruby-VM понимает.
byte_code = RubyVM::InstructionSequence.compile_file '/home/john/somefile.rb'
File.binwrite '/home/john/bytecode', byte_code.to_binary
и в командной строке
$ cat bytecode
YARB�
IUsx86_64-linux*.*1
+1�!AA*1
!qy��������yyQ� E/home/john/somefile.rbE<main>E <class:A>EshivaEhelloEAEputsEcore#define_methodu����� 5M
Содержание файла
class A
def shiva
puts 'hello'
end
end
Какова цель?
Ну, ruby требуется время, чтобы скомпилировать ваш исходный код в байтовые коды, чтобы вы могли загружать свои байтовые коды прямо в ruby и выполнять. Никаких накладных расходов на проверку и компиляцию грамматики. Это намного быстрее, чем обычные процессы.
Как загрузить байт-код?
bytecode = File.readbin('/home/john/bytecode')
instruction_from_byte_code = RubyVM::InstructionSequence.load_from_binary byte_code
instruction_from_byte_code.eval
# => :shiva
Примечание : Этот ответ проверен только в MRI . Может работать или не работать в других реализациях Ruby