# Chiudere il codice

**URL:** <https://www.ruby-forum.com/t/chiudere-il-codice/187055>\
**Category:** IT\
**Created:** [April 16, 2010, 9:28am UTC](https://www.ruby-forum.com/t/chiudere-il-codice/187055 "2010-04-16T09:28:17Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![pezzuya](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/eada6e/32.png) [@pezzuya](https://www.ruby-forum.com/u/pezzuya)\
**Post date:** [April 16, 2010, 9:28am UTC](https://www.ruby-forum.com/t/chiudere-il-codice/187055/1 "2010-04-16T09:28:17Z")

</div>

Ciao a tutti.  
Se volessi sviluppare un’applicazione anche semplicissima in RoR,  
supponiamo un archivio di documenti e volessi poi venderla a un mio  
potenziale cliente…

ci sarebbe il modo di fornirla al mio cliente come se fosse  
un’applicazione compilata?

o meglio…

ci sarebbe la possibilitÃ di “chiudere” il codice per evitare che il  
cliente ci “rovisti dentro”?

ovviamente non vale l’opzione di hostarla su un mio server e fornire la  
uid e pwd al cliente 🙂

Grazie a tutte le persone che mi vorranno aiutare.

Ciao

---

<div class="post-metadata">

**Author:** ![pezzuya](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/eada6e/32.png) [@pezzuya](https://www.ruby-forum.com/u/pezzuya)\
**Post date:** [April 16, 2010, 11:45am UTC](https://www.ruby-forum.com/t/chiudere-il-codice/187055/2 "2010-04-16T11:45:10Z")

</div>

Cerca su google: obfuscator ruby

---

<div class="post-metadata">

**Author:** ![pezzuya](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/eada6e/32.png) [@pezzuya](https://www.ruby-forum.com/u/pezzuya)\
**Post date:** [April 16, 2010, 6:14pm UTC](https://www.ruby-forum.com/t/chiudere-il-codice/187055/3 "2010-04-16T18:14:54Z")

</div>

mumble …

ho le idee un po’ confuse pero’ tempo addietro quando ho cominciato ad  
interessarmi a Ruby mi ricordo di aver trovato gente che parlava di un  
tool Ror2exe che in pratica compila un applicazione Ror in un sigolo  
eseguibile che poi viene lanciato ed e’ disponibile sulla porta 3000

Se non ricordo male questo tool include anche la Ruby VM e quindi una  
volta creato l’ exe non ti serve neppure che il PC abbia Ruby  
installato.

---

<div class="post-metadata">

**Author:** ![pezzuya](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/eada6e/32.png) [@pezzuya](https://www.ruby-forum.com/u/pezzuya)\
**Post date:** [April 19, 2010, 11:40am UTC](https://www.ruby-forum.com/t/chiudere-il-codice/187055/4 "2010-04-19T11:40:34Z")

</div>

Simone R. wrote:

> mumble …
> 
> ho le idee un po’ confuse pero’ tempo addietro quando ho cominciato ad  
> interessarmi a Ruby mi ricordo di aver trovato gente che parlava di un  
> tool Ror2exe che in pratica compila un applicazione Ror in un sigolo  
> eseguibile che poi viene lanciato ed e’ disponibile sulla porta 3000
> 
> Se non ricordo male questo tool include anche la Ruby VM e quindi una  
> volta creato l’ exe non ti serve neppure che il PC abbia Ruby  
> installato.

Ho cercato su google ma ho trovato solo questo:

[http://www.javaeye.com/topic/132768](http://www.javaeye.com/topic/132768)

solo che chiaramente non ho capito nulla della discussione 🙂

---

<div class="post-metadata">

**Author:** ![pezzuya](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/eada6e/32.png) [@pezzuya](https://www.ruby-forum.com/u/pezzuya)\
**Post date:** [April 19, 2010, 12:34pm UTC](https://www.ruby-forum.com/t/chiudere-il-codice/187055/5 "2010-04-19T12:34:18Z")

</div>

Il 19 aprile 2010 11.40, pezzuya … [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha  
scritto:

> Simone R. wrote:  
> Ho cercato su google ma ho trovato solo questo:
> 
> [http://www.javaeye.com/topic/132768](http://www.javaeye.com/topic/132768)
> 
> solo che chiaramente non ho capito nulla della discussione 🙂

Come, eppure è chiarissimo! 😛

Quello che so: Ruby MRI (1.8.6) è interpretato e basta; quasi tutte le  
altre implementazioni, compresa la 1.9.1, sono basate su virtual  
machine, e quindi su bytecode.

Tuttavia, da una veloce ricerca pare che non sia possibile salvare su  
file il bytecode della 1.9.1; esistono però alternative:  
Rubinius (sperimentale) - usa un suo bytecode;  
jruby - può salvare in .class, bytecode java;  
ironruby - può salvare in IL, il bytecode .NET;  
Maglev (sperimentale) - usa bytecode gemstone (che non so cosa sia), e  
che io sappia può salvarlo;

Molto probabilmente ce ne sono altri.

Tieni però conto che comunque il bytecode si decompila che è un  
piacere, e - a meno di offuscatori efficaci - ci vogliono pochi  
secondi per ottenere il codice sorgente di un compilato java o .net,  
ad esempio.

pietro

---

<div class="post-metadata">

**Author:** ![pezzuya](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/eada6e/32.png) [@pezzuya](https://www.ruby-forum.com/u/pezzuya)\
**Post date:** [April 19, 2010, 12:51pm UTC](https://www.ruby-forum.com/t/chiudere-il-codice/187055/6 "2010-04-19T12:51:52Z")

</div>

2010/4/19 Pietro G. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Tieni però conto che comunque il bytecode si decompila che è un  
> piacere, e - a meno di offuscatori efficaci - ci vogliono pochi  
> secondi per ottenere il codice sorgente di un compilato java o .net,  
> ad esempio.

credo che il punto sia sempre: metti un livello di difficoltà  
_adeguato_, non sarà mai sicuro al 100% ma ti aiuta contro il “casual  
abuser”.

Se non ricordo male, la versione “installabile” di github è fatta  
così: applicazione ROR portata su jruby, pacchettizzata e con  
installer.

Plausibilmente puoi ottenere un risultato decente con gli step

- verifica che l’app giri su jruby, fix
- usa warbler per creare un file WAR deployabile in qualsiasi  
application server java,  
[GitHub - nicksieger/warbler: Warbler chirpily constructs .war files of your Ruby applications.](http://github.com/nicksieger/warbler)
- usa proguard per fare una veloce oscurazione  
[http://proguard.sourceforge.net/](http://proguard.sourceforge.net/).

a questo punto hai un war che è utilizzabile, per semplificare il  
deploy ti basta aggiungere un file .bat/.sh che usi jetty per lanciare  
il war, è piuttosto semplice e rende il tutto completamente for  
dummies.

---

<div class="post-metadata">

**Author:** ![pezzuya](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/eada6e/32.png) [@pezzuya](https://www.ruby-forum.com/u/pezzuya)\
**Post date:** [April 16, 2010, 7:19pm UTC](https://www.ruby-forum.com/t/chiudere-il-codice/187055/7 "2010-04-16T19:19:55Z")

</div>

On Friday 16 April 2010 18:14:54 Simone R. wrote:

> Se non ricordo male questo tool include anche la Ruby VM e quindi una  
> volta creato l’ exe non ti serve neppure che il PC abbia Ruby  
> installato.

Penso che faccia affidamento su RubyScript2Exe [1]. In questo caso e’  
comunque  
possibile estrarre il codice ruby dall’exe, basta passare il parametro  
“–eee-  
justextract” all’eseguibile.

Ciao  
Flavio

[1] [http://www.erikveen.dds.nl/rubyscript2exe/](http://www.erikveen.dds.nl/rubyscript2exe/)
