Question

Je me demande s'il est possible de distribuer une application RoR à des fins de production sans code source? J'ai vu ce message sur SO . , mais ma situation est un peu différente. Ce serait une application administrée par des personnes ayant une idée, de sorte que je suis content de nécessiter encore une configuration Apache / Mongrel / MySQL chez le client. Tout ce que je veux vraiment, c'est que la source soit protégée. L’encodage semble être un moyen populaire pour distribuer des applications PHP (par exemple: Helpspot ).

J'ai trouvé ces solutions potentielles:

  • Zenobfuscate - tous les types de code Ruby ne sont pas pris en charge, de sorte que cela compte
  • Encodeur Ruby - peut être la meilleure option, car leur encodeur PHP est correct (je ne l'ai pas déjà essayé cependant) mais ce n'est pas encore disponible. J'ai déjà utilisé IONcube pour PHP et cela a bien fonctionné, mais il ne semble pas que IONcube est intéressé pour le moment .
  • Slingshot - cela a été mentionné dans l'autre message SO, mais cela résout un problème différent de le mien et la source est toujours visible.
  • RubyScript2Exe - depuis la documentation, ce n'est pas prêt pour la production, donc compte cela.

J'ai entendu dire que JRuby et la distribution de bytecode pourraient être un moyen d'y parvenir, mais je n'ai jamais utilisé JRuby, je ne suis donc pas sûr de ce que cela implique.

Quelqu'un peut-il proposer des idées et / ou des exemples connus? Idéalement, j'aimerais bien avoir un scénario de construction automatisé.

Était-ce utile?

La solution

Votre meilleure option pour le moment est d’utiliser JRuby. Un peu d’arrière-plan: mon entreprise ( BitRock ) travaille avec de nombreux fournisseurs open source propriétaires et commerciaux. Nous les aidons à conditionner leur logiciel serveur, généralement basé sur PHP, Java ou Ruby, avec un serveur Web ou un serveur d'applications (Apache, Tomcat), le langage d'exécution et une base de données (typiquement Postgres, MySQL), installateur facile à utiliser. Nous avons un grand nombre de clients basés sur PHP (y compris HelpSpot, dont vous avez parlé), mais également plusieurs clients basés sur Rails. Dans le cas des clients RoR, la norme consiste à utiliser JRuby avec Tomcat ou Glassfish, bien que, dans certains cas, nous fournissions également un interpréteur Ruby natif pour exécuter des scripts spécifiques qui reposent sur des bibliothèques non encore portées sur JRuby (généralement non essentielles à l'application). . JRuby a mûri rapidement et dans de nombreux cas, il exécute son code plus rapidement que Ruby. Vous devrez également considérer que, bien que le portage de votre code sur JRuby soit relativement simple, vous devrez investir un peu de temps là-dessus. Vous voudrez peut-être vérifier JRuby Stack , qui est un programme d'installation gratuit de tout ce dont vous avez besoin pour commencer. Bonne chance!

Autres conseils

Si vous publiez la source, que ce soit obscurci ou non, votre application sera piratée. Voir, par exemple, Mint . Cela dépend de ce que vous construisez, mais vous trouverez peut-être mieux de publier l'application de manière hybride: une application hébergée avec une API bien définie et un composant exécuté sur le serveur du client. Tant que la vraie valeur de votre produit réside sur le côté serveur, vous n'avez pas besoin de masquer votre code, vous pouvez simplement libérer le code source sans le modifier. En outre, cela peut également vous permettre d’atteindre des clients exécutant, par exemple, PHP plutôt que Ruby. Voir, par exemple, Google Analytics , HopToad , Scout , etc., etc.

Vous pouvez le faire, mais cela ne ferait rien pour empêcher quelqu'un de faire de l'ingénierie inverse ou de le modifier. Je me souviens qu'il y avait un article sur des tentatives similaires d'obstruction de Perl et sur la manière dont elles pourraient être efficacement contournées par un débogueur et 5 minutes d'effort.

Si vous ne pouvez pas attendre pour la livraison de RubyEncoder, alors je pense que ZenObfuscate est le plus prometteur. Bien que cela puisse nécessiter quelques modifications de votre code source, ils le disent sur leur site:

  

ZenObfuscate coûte 2500 USD pour une licence de site ou est négociable individuellement pour d’autres systèmes de licence. Oui, c'est cher. C'était exprès. Mais ne laissez pas cela vous contrarier trop. Si votre produit est vraiment cool et que nous voulons le voir réussir, nous le ferons fonctionner. "Vraiment cool" n'est pas freecell.

Bien entendu, pour 2 500 dollars (ou plus), vous voudriez que le compilateur apporte quelques ajustements qui rendront votre base de code entièrement prise en charge. Cela pourrait valoir la peine de les engager dans la conversation.

Vous pouvez également consulter Mingle à partir de ThoughtWorks studios comme exemple d'utilisation de JRuby à cette fin. C'est une application Ruby on Rails, ils l'ont exécutée avec JRuby. Ils ont personnalisé jruby pour charger des fichiers .rb cryptés.

Jetez un coup d'œil à JumpBox .

J'ai eu des conversations avec eux sur le sujet et ils semblent avoir une solution qui fonctionnera bientôt pour les applications Rails.

Je me demande si vous pouvez simplement "compiler" le code ruby ??dans un exécutable en utilisant quelque chose comme RubyScript2Exe ?

Pour être honnête, je ne l’ai pas utilisé, mais il semble que cela puisse être ce que vous voulez, même si les scripts avec l’interpréteur sont regroupés dans un seul exécutable.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top