Puoi distribuire un’applicazione Ruby on Rails senza Source?

Mi chiedo se è ansible distribuire un’app RoR per l’uso di produzione senza codice sorgente? Ho visto questo post su SO , ma la mia situazione è leggermente diversa. Questa sarebbe un’app gestita da persone con qualche indizio, quindi sono tranquillo con ancora bisogno di una configurazione Apache / Mongrel / MySQL sul lato cliente. Tutto quello che voglio veramente è che la fonte sia protetta. La codifica sembra un modo molto diffuso per distribuire app PHP (ad esempio: Helpspot ).

Ho trovato queste potenziali soluzioni:

  • Zenobfuscate : non tutti i tipi di codice Ruby sono supportati, quindi questo lo conta
  • Ruby Encoder – potrebbe essere l’opzione migliore, dato che il loro codificatore PHP sembra a posto (non l’ho provato comunque) ma non è ancora disponibile. Ho usato IONcube per PHP prima e ha funzionato bene, ma non sembra che IONcube sia ancora interessato .
  • Fionda – è stata menzionata nell’altro post SO, ma risolve un problema diverso da quello mio e la sorgente è ancora visibile.
  • RubyScript2Exe – dal doco, non è pronto per la produzione, quindi lo conta.

Ho sentito che potenzialmente usare JRuby e distribuire il bytecode potrebbe essere un modo per raggiungere questo objective, ma non ho mai usato JRuby quindi non sono sicuro di cosa sia coinvolto.

Qualcuno può offrire idee e / o esempi noti? Idealmente mi piacerebbe avere anche qualche tipo di scenario di build automatizzato.

La tua migliore opzione adesso è usare JRuby. Un po ‘di background: la mia azienda ( BitRock ) lavora con molti fornitori open source proprietari e commerciali. Li aiutiamo a impacchettare il loro software server, che è tipicamente basato su PHP, Java o Ruby insieme a un server web o application server (Apache, Tomcat), il runtime della lingua e un database (tipicamente Postgres, MySQL) in un self-contained, programma di installazione facile da usare. Abbiamo un gran numero di clienti basati su PHP (incluso HelpSpot, di cui parli) ma anche diversi basati su Rails. Nel caso dei clienti RoR la norma è usare JRuby insieme a Tomcat o Glassfish sebbene in alcuni casi includiamo anche un interprete Ruby nativo per eseguire script specifici che si basano su librerie non ancora trasferite su JRuby (di solito non essenziali per l’applicazione) . JRuby è maturato rapidamente e in molti casi esegue il proprio codice più velocemente del normale Ruby. Dovrai anche considerare che sebbene il porting del tuo codice su JRuby sia abbastanza semplice, dovrai dedicare del tempo a questo. Potresti voler controllare JRuby Stack che è un programma di installazione gratuito di tutto il necessario per iniziare. In bocca al lupo!

Se rilasci la fonte, offuscata o meno, la tua app verrà piratata. Vedi, per esempio, Mint . Dipende da ciò che stai creando, ma potresti scoprire che è meglio rilasciare l’app come un ibrido di sorta: un’app ospitata con un’API ben definita e un componente che gira sul server del cliente. Finché il vero valore del tuo prodotto non risiede sul lato server, non è necessario hide il codice e puoi semplicemente rilasciare il codice sorgente non modificato. Inoltre, questo potrebbe anche darti l’opportunità di raggiungere i clienti che eseguono, per esempio, PHP piuttosto che Ruby. Vedi, ad esempio, Google Analytics , HopToad , Scout , ecc. Ecc.

Puoi, ma non farebbe nulla per impedire a qualcuno di decodificare o modificarlo. Ricordo che c’era un articolo su simili tentativi di offendere Perl e su come poter essere efficacemente aggirati da un debugger e 5 minuti di sforzo.

Se non puoi aspettare la consegna di RubyEncoder, penso che ZenObfuscate sia il più promettente. Anche se potrebbe richiedere alcune modifiche al codice sorgente, lo dicono sul loro sito:

ZenObfuscate costa $ 2500 per una licenza di sito o è individualmente negoziabile per altri schemi di licenza. Sì, è costoso. Questo era apposta. Ma non lasciare che ti ostacoli troppo. Se il tuo prodotto è davvero bello e vogliamo vederlo avere successo, lo faremo funzionare. “Davvero bello” non è un freecell.

Ovviamente, per $ 2500 (o più), ti aspetteresti di ottenere qualche modifica al compilatore che renda pienamente supportato il tuo codebase. Potrebbe valere la pena coinvolgerli nella conversazione.

Puoi anche dare un’occhiata a Mingle degli studi ThoughtWorks come esempio di come usare JRuby per questo. È un’app Ruby on Rails, l’eseguono tramite JRuby. Hanno personalizzato jruby per caricare i file .rb crittografati.

Dai un’occhiata a JumpBox .

Ho avuto conversazioni con loro sull’argomento e sembra che abbiano una soluzione che presto funzionerà per le app Rails.

Mi chiedo se potresti semplicemente “compilare” il codice ruby ​​in un eseguibile usando qualcosa come RubyScript2Exe ?

Ad essere onesti non l’ho usato ma sembra che potrebbe essere quello che vuoi, anche se impacchetta gli script con l’interprete in un singolo eseguibile.