RubyVM::InstructionSequence - eval z pliku

Witam. Mam mały problem. Otóż użyłem RubyVM::InstructionSequence by skompilować plik test.rb i użyłem funkcji .to_a by zapisać ją do tablicy, a następnie zapisałem powstałą tablicę do pliku.

Jest jakiś sposób na wywołanie tej sekwencji (metoda eval z RubyVM::InstructionSequence) po odczycie z tego pliku ?

Kod który użyłem do kompilacji:

file = File.open('test.rbc','wb') Marshal.dump(RubyVM::InstructionSequence.compile_file("test.rb").to_a,file) file.close
Próbowałem tego, ale nie zadziałało:

file = File.open('test.rbc','rb') x = Marshal.load(file) puts RubyVM::InstructionSequence.new(x.to_s).eval file.close
Pomóżcie :wink:

Odpowiedź na Twoje pytanie brzmi prawdopodobnie, że niestety, ale (jeszcze) nie. Konstruktur przyjmuje źródło (lub plik ze źródłem w Ruby), więc podawanie mu zwróconej wcześniej tablicy nic pomaga. Nie ma w tej chwili metody w RubyVM::InstructionSequence, która pozwoliła by na instancję obiektu na podstawie wygenerowanej wcześniej tej specyficznej tablicy. RubyVM::InstructionSequence nie obsługuje serializacji.

Piszę tylko na podstawie dokumentacji, ale internet zdaje się potwierdzać (http://stackoverflow.com/questions/14398964/ruby-2-0-bytecode-export-import)