domingo, 5 de julho de 2009

Bug RubyScript2Exe - rubyscript2exe.rb:621:in `replace': can't modify frozen string (TypeError)

Eu tive a vontade de passar meus programas que são interpretados em Ruby para programas executaveis, quem não sabe Ruby é uma linguagem interpretada e não precisa ser compilada para ser executada, assim como Perl ou Python, porém existe um arquivo que pode passar seus arquivos em Ruby para executaveis que é o RubyScript2Exe que pode ser encontrado em http://www.erikveen.dds.nl/rubyscript2exe/#6.0.0.

Porém ao tentar executa-lo dando
# ruby rubyscript2exe.rb testing.rb

me retornou o seguinte erro:
rubyscript2exe.rb:621:in `replace': can't modify frozen string (TypeError)
        from rubyscript2exe.rb:621
        from rubyscript2exe.rb:577:in `newlocation'
        from rubyscript2exe.rb:505:in `newlocation'
        from rubyscript2exe.rb:472:in `newlocation'
        from rubyscript2exe.rb:505:in `newlocation'
        from rubyscript2exe.rb:577:in `newlocation'
        from rubyscript2exe.rb:619

Então procurei na internet e achei um blog que me ajudou veja o blog(ingles).
Nele diz como corrigir, e tal correção me ajudou e resolveu meu problema, veja o que deve ser feito:

Na linha 621 ou próximo, procure por
$0.replace(File.expand_path("./init.rb")) 


Altere para
$_0 = File.expand_path("./init.rb") 
alias $__0 $0 
alias $0 $_0

Pronto salve o arquivo e tente novamente, comigo funcionou, só nao gostei do fato de um simples #print "Hello World" ter ficado com 699Kb, isso achei meio triste pacas, mas vou fazer alguns testes agora, próximo post vou falar mais sobre os erros encontrados.

Abraços 

Um comentário:

Comentar motiva novos posts, assim como posts até mesmo melhores.