Mostrando postagens com marcador rubyscript2exe. Mostrar todas as postagens
Mostrando postagens com marcador rubyscript2exe. Mostrar todas as postagens

terça-feira, 28 de julho de 2009

RubyScript2Exe - Sobre e Testes :(

Como falei no último post sobre o RubyScript2EXE iria relatar meus testes como RubyScript2Exe, no qual iria fazer alguns testes e fiz, e infelizmente para mim não foram boas. Lembrando que os testes foram realizados no Windows XP Pro, num Celeron M, com 1,4 Ghz.
1) Primeiro o teste simples de um simples #print "Hello World":

Ruby: o arquivo fica com 13 bytes.
EXE: o arquivo ficou com 699Kb, em várias vezes é sempre o mesmo tamanho.
2) Usando uma estrutura de repetição tipo o for:
Ruby: o arquivo está com 34 bytes.
EXE: o arquivo ficou com 699Kb, também, acho que isso já começa a ficar meio ruim, ou pelo menos bom, pois deve ficar ainda maior mais não funcionou.

3) Agora fiz um simples 'cat', um comando muito usado no linux, e nele abri o arquivo e imprimi na tela.
Ruby: o arquivo esta com 63 bytes.
EXE: arquivo ficou com 699kb, isso é impressionante, e dai já começa a criar lógicas sobre o que seria.
4) Os Anteriores foi bem simples, ou quase, então resolvi criar uma simples janela com Ruby, então usando o wxWidgets, criei uma janela bem simples, e nem ao menos coloquei conteúdo dentro dela, vejamos.
Ruby: o arquivo esta com 174 bytes.
EXE: olha a facada letal, o arquivo ficou com 7,87 Mb, isso foi pra mim o fim do uso do RubyScript2EXE.
Após a avaliação 4 fiquei muito triste e desanimado com o RubyScript2Exe, porém posso futuramente, disseca-lo e melhorar o que ainda não acho bom, principalmente por gerar Exe's tao grandes, porém isso já é um começo em minha opnião, e espero sinceramente que você use e se possível melhore, para termos vantagens ainda maiores ao usarmos o Ruby.
Mesmo assim existem outras alternativas, e é somente procurar que achará a solução adequada pra você.
Esse post é só uma forma de mostrar uma alternativa para as pessoas, porém lembre-se que ela pode te ajudar muito, ainda mais se não trabalhar com interface. Boa Sorte.
Lembrando que todos os arquivos dos teste que realizei encontram-se no seguinte link:



Caso queira saber mais sobre o RubyScript2Exe pode visitar: http://www.erikveen.dds.nl/rubyscript2exe/
espero que isso te motive muito mesmo.
ATUALIZADO(29-04-10)
Alias uma solução que pode ser adotada, é usar esses compressores de .exe encontrados em varios sites, e usados por grande empresas, realmente torna a alternativa muito boa, facilitando trabalhar com rubyscript2exe.
Um dos programas que indico é o UPX, demonstra grande qualidades, já vi ele comprimir um exe Delphi de 32mb para apenas 6mb, entao ele pode vir a fazer milagre em alguns casos.

Abraços

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