您可以在没有源代码的情况下分发Ruby on Rails应用程序吗?

问题描述 投票:24回答:7

我想知道是否可以在没有源代码的情况下分发RoR应用程序供生产使用?我看过this post on SO,但是我的情况有些不同。这将是一个有一些线索的人管理的应用程序,因此我很酷,仍然需要在客户端上安装Apache / Mongrel / MySQL。我真正想要的只是保护源。编码似乎是分发PHP应用程序的一种流行方法(例如:Helpspot)。

我已经找到了这些潜在的解决方案:

  • Zenobfuscate-然而,并非所有类型的Ruby代码都受支持,因此可以算出来
  • Ruby Encoder-可能是最好的选择,因为他们的PHP编码器看起来还不错(不过我还没有尝试过),但是尚不可用。我以前曾将IONcube用于PHP,并且运行良好,但是it doesn't seem that IONcube is interested yet
  • Slingshot-在另一篇SO文章中已提及,但它解决了一个不同的问题,仍然可以看到源。
  • [RubyScript2Exe-来自doco,尚不具备生产准备,因此可以算出来。

[我听说可能使用JRuby并分发字节码可能是实现此目的的一种方法,但是我从未使用过JRuby,所以我不确定所涉及的是什么。

任何人都可以提供任何想法和/或已知示例吗?理想情况下,我也希望有某种自动构建方案。

ruby-on-rails ruby encoding obfuscation
7个回答
25
投票

您目前最好的选择是使用JRuby。背景知识:我的公司(BitRock)与许多专有和商业开源供应商合作。我们帮助他们将通常基于PHP,Java或Ruby以及网络服务器或应用程序服务器(Apache,Tomcat),语言运行时和数据库(通常为Postgres,MySQL)的服务器软件打包到一个独立的,易于使用的安装程序。我们有很多基于PHP的客户(包括您提到的HelpSpot),还有几个基于Rails的客户。对于RoR客户,通常是将JRuby与Tomcat或Glassfish一起使用,尽管在某些情况下,我们还捆绑了本机Ruby解释器来运行依赖于尚未移植到JRuby的库的特定脚本(通常不是应用程序的核心) 。 JRuby已经迅速成熟,在许多情况下,它实际上比常规Ruby更快地运行其代码。您还需要考虑,尽管将代码移植到JRuby非常简单,但是您将需要花费一些时间。您可能需要检查JRuby Stack,它是您入门所需的一切的免费安装程序。祝你好运!


7
投票

如果您发布源代码,或者以混淆或其他方式发布,则您的应用将被盗版。参见,例如,Mint。这取决于您要构建的内容,但您可能会发现最好以多种混合形式发布该应用程序:具有明确定义的API的托管应用程序,以及在客户服务器上运行的组件。只要您产品的真正价值存在于服务器端,就无需混淆代码,您可以发布未经修改的源代码。此外,这也可能使您有机会接触正在运行PHP(而不是Ruby)的客户端。参见,例如,Google AnalyticsHopToadScout等,等等。>


2
投票

您可以,但是它不会做任何事情来防止有人对它进行反向工程或修改。我记得有一篇文章介绍过类似的混淆Perl的尝试,以及调试器和5分钟的工作如何有效地绕过它们。


2
投票

如果您不能等待RubyEncoder的交付,那么我认为ZenObfuscate是最有前途的。尽管可能需要对您的源代码进行一些修改,但他们确实在其站点上这样说:


1
投票

您也可以从Mingle看一下ThoughtWorks studios,作为使用JRuby的示例。这是一个Ruby on Rails应用程序,他们使用JRuby运行它。他们已经定制了jruby以加载加密的.rb文件。


0
投票

看看JumpBox


0
投票

我想知道您是否可以使用RubyScript2Exe之类的代码将Ruby代码“编译”为可执行文件?

© www.soinside.com 2019 - 2024. All rights reserved.