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

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

Can you Distribute a Ruby on Rails Application without Source?

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

我已经找到了以下可能的解决方案:

  • Zenobfuscate-但是不支持所有类型的Ruby代码,因此可以算出
  • Ruby Encoder-可能是最好的选择,因为他们的PHP编码器看起来还不错(不过我还没有尝试过),但是尚不可用。我以前曾将IONcube用于PHP,并且运行良好,但是IONcube似乎还没有兴趣。
  • 弹弓-在另一篇SO帖子中提到过,但是它解决了一个不同的问题,并且仍然可见。
  • RubyScript2Exe-从doco来看,它还没有准备好生产,因此可以算出来。

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

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


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


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


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

ZenObfuscate costs $2500 for a site license or is individually negotiable for other licensing schemes. Yes, that is expensive. That was on purpose. But don't let that thwart you too much. If your product is really cool and we want to see it succeed, we'll make it work."Really cool" is not freecell.

当然,对于2500美元(或更多),您希望对编译器进行一些调整,以使您的代码库得到完全支持。让他们参与对话可能是值得的。


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


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


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

说实话,我还没有使用过它,但似乎它就是您想要的,即使它只是将带有解释器的脚本打包到一个可执行文件中。


看看JumpBox。

我已经与他们就该主题进行了交谈,他们似乎有一个可以很快在Rails应用程序中使用的解决方案。


推荐阅读