Frage

Ich frage mich, ob es möglich ist, eine RoR app für den produktiven Einsatz ohne Quellcode zu verteilen? Ich habe href="https://stackoverflow.com/questions/55711/options-for-distribution-of-an-offline-ruby-on-rails-application"> diesen Beitrag gesehen , aber meine Situation ist ein wenig anders. Dies würde eine App von Menschen mit einem gewissen Anhaltspunkt verabreicht, so dass ich bin cool mit noch einen Apache / Mongrel / MySQL-Setup auf Kundenseite erfordert. Alles, was ich wirklich will für die Quelle zu schützen. Encoding scheint ein beliebter Weg für die Verteilung PHP-Anwendungen zu gehen. (ZB: Helpspot )

Ich habe diese möglichen Lösungen gefunden:

  • Zenobfuscate - nicht alle Arten von Ruby-Code wird jedoch unterstützt, so dass das aus zählt
  • Ruby-Encoder - kann die beste Option sein, da ihr PHP-Encoder in Ordnung aussieht (ich habe nicht versuchte es aber), aber es ist noch nicht verfügbar. Ich habe ionCube für PHP verwendet vor und es hat gut funktioniert, aber es scheint nicht, dass ionCube interessiert noch .
  • Schleuder - es wurde in dem anderen SO Beitrag erwähnt, aber es löst ein anderes Problem zu Mine und die Quelle ist noch sichtbar.
  • RubyScript2Exe - vom doco, es ist nicht die Produktion bereit, so dass Das zählt aus.

Ich habe gehört, dass potenziell JRuby mit und Bytecode verteilen könnte ein Weg sein, um dies zu erreichen, aber ich habe noch nie so JRuby verwende Ich bin nicht sicher, worum es geht.

Kann jemand bieten Ideen und / oder bekannte Beispiele? Im Idealfall als auch ich würde gerne eine Art von automatisiertem Build-Szenario haben.

War es hilfreich?

Lösung

Ihre beste Option jetzt ist JRuby zu verwenden. Ein wenig Hintergrund: Meine Firma ( BitRock ) arbeitet mit vielen proprietären und kommerziellen Open-Source-Anbieter. Wir helfen ihnen, ihre Server-Software-Paket, das auf PHP, Java oder Ruby basiert in der Regel zusammen mit einem Web-Server oder Anwendungsserver (Apache, Tomcat), die Language Runtime und einer Datenbank (in der Regel Postgres, MySQL) in eine in sich geschlossene, einfache Installation zu verwenden. Wir haben eine große Anzahl von PHP-basierten Kunden (einschließlich HelpSpot, die Sie erwähnen), sondern auch mehrere Rails-basiert sind. Im Falle der RoR Kunden ist die Norm JRuby zusammen mit Tomcat oder Glassfish zu verwenden, obwohl in einigen Fällen auch wir eine native Ruby-Interpreter bündeln bestimmte Skripte auszuführen, die auf Bibliotheken angewiesen noch nicht portiert JRuby (in der Regel nicht Kern der Anwendung) . JRuby hat sich schnell gereift und in vielen Fällen ist es tatsächlich läuft, ihren Code schneller als herkömmliche Rubin. Sie müssen auch bedenken, dass, obwohl der Code auf JRuby Portierung recht einfach ist, müssen Sie einige Zeit auf, dass investieren. Möglicherweise möchten Sie JRuby Stapel überprüfen, die eine kostenlose Installationsprogramm von allem ist, dass Sie brauchen, um loszulegen. Viel Glück!

Andere Tipps

Wenn Sie die Quelle freigeben, verschleiert oder auf andere Weise, wird Ihre App unerlaubt werden. Siehe zum Beispiel Mint . Es hängt davon ab, was Sie bauen, aber man kann feststellen, dass Sie besser sind weg die App als Hybrid von möglichen Freigabe: Eine gehostete Anwendung mit einer gut definierten API, und eine Komponente, die auf dem Server des Kunden läuft. Solange der wahre Wert Ihres Produktes auf der Server-Seite lebt, brauchen Sie nicht, Ihren Code zu verschleiern, und Sie können nur die unmodifizierte Quellcode freigeben. Darüber hinaus ist diese geben Ihnen auch die Möglichkeit, Kunden zu erreichen laufen, sagen wir, PHP statt Rubin. Siehe zum Beispiel Google Analytics , HopToad , Scout , etc, etc.

Sie können, aber es würde nichts tun, jemanden daran zu hindern, Reverse-Engineering oder modifizieren sie. Ich erinnere mich, sich ein Artikel über Ähnliche Versuche war Perl zu obfusticate und wie sie effektiv durch einen Debugger und 5 Minuten Aufwand umgangen werden könnten.

Wenn Sie nicht für die Lieferung von RubyEncoder warten können, dann denke ich, ZenObfuscate ist die vielversprechendste. Obwohl es einige Änderungen an Ihrem Quellcode erfordern können, tun sie sagen, dass dies auf ihrer Website:

  

ZenObfuscate kostet $ 2500 für eine Site-Lizenz oder für andere Lizenzmodelle individuell verhandelbar. Ja, das ist teuer. Das war absichtlich. Aber lassen Sie sich nicht, dass Sie zu viel vereiteln. Wenn Ihr Produkt ist wirklich cool, und wir wollen es sehen gelingen, werden wir es funktioniert. „Wirklich cool“ ist nicht Cell.

Natürlich, für $ 2500 (oder mehr), dann würden Sie hoffen, ein paar Veränderungen an den Compiler zu erhalten, die Ihre Codebasis machen würde voll unterstützt. Es könnte sich lohnen, sie in das Gespräch eingreifen.

Sie können auch einen Blick auf Mingle aus Thoughtworks Studios als Beispiel dafür für JRuby verwenden. Es ist eine Ruby on Rails-Anwendung, laufen sie es JRuby verwenden. Sie haben jruby angepasst, um verschlüsselte .rb Dateien zu laden.

Hier finden Sie aktuelle JumpBox .

Ich habe Gespräche mit ihnen über das Thema hatte, und sie scheinen eine Lösung zu haben, die schnell arbeiten für Rails-Anwendungen.

Ich frage mich, wenn Sie könnten nur „kompilieren“, um die Ruby-Code in eine ausführbare Datei mit so etwas wie RubyScript2Exe ?

Um ehrlich zu sein, ich habe es nicht benutzt, aber es scheint, wie es sein könnte, was Sie wollen, auch wenn es nur die Skripte mit dem Interpreter in eine einzigen ausführbaren Pakete auf.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top